http digest autentifikace + hesla v DB - VYRESENO

Tomas Macek macek na fortech.cz
Pondělí Březen 5 13:03:35 CET 2012



On Fri, 2 Mar 2012, Pavel Kankovsky wrote:

> On Fri, 2 Mar 2012, Tomas Macek wrote:
>
>> Modul mod_authn_dbd jsem vynechával, protože z dokumentace mi vyplývalo, že 
>> lze použít autentifikaci pouze "require valid-user" nikoli i "require group 
>> <grupa>", což jsme původně chtěli taky zachovat.
>
> Moduly mod_authn_... řeší pouze autentizaci tj. ověření hesla a podobné 
> funkce. Kontrola toho, zda je uživatel v nějaké skupině, je autorizace
> a tu mají na starosti moduly mod_authz_...
>
> Problém není v tom, že to mod_authn_dbd neumí, ale v tom, že ve 2.2
> chybí mod_authz_dbd (ve 2.4 už je). Tady je prý implementace, která
> ve 2.2 funguje: <http://people.apache.org/~niq/dbd.html>
>
>> Další věc, na kterou jsem narazil je to, že mod_authn_dbd nebyl v žádným 
>> repu, který tu mám nakonfigurovaný, takže jsem se snažil vrhnout síly 
>> jinam.
>
> Hmm...
>
> $ yum -C whatprovides '*/mod_authn_dbd.so'
> ...
> httpd-2.2.15-15.el6.centos.1.x86_64 : Apache HTTP Server
> ...
>
> Podobně i na pětce. Že by to v SL neměli?
>
>> Nebude-li zbytí, můžu zkusit tohle - pokud mi to teda doporučíte jako 
>> smysluplnou možnost.
>
> mod_auth_pgsql je při vší úctě stará neudržovaná vykopávka a lze vygůglil 
> stížnosti na to, že to s digest nefunguje.
>
> mod_authn_dbd je oficiální součást Apache, dokumentace se vyjadřuje v tom
> smyslu, že digest auth. je podporována a lze vygůglit informace o
> tom, že to skutečně funguje, např. 
> <http://www.webmasterworld.com/apache/4331572.htm>.
>
> Rozhodněte se sám. :)
>

Ještě jednou děkuji za nakopnutí správným směrem! :-)
Modul mod_authn_dbd samozřejmě funguje a je součástí Apache jako takovýho, 
není to žádný extra balíček jako jsou jiné mod_auth*. Ale to už jsem psal 
dříve.

Třeba to někomu pomůže, aktuálně to mám takhle:

<Location />
     AuthName "Intra"
     AuthType Digest
     BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
     AuthDigestDomain http://127.0.0.1/
     AuthDigestProvider dbd
     AuthUserFile /dev/null

     # AuthDBDUserPWQuery "SELECT md5(username || ':Intra:' || 
password_plain) FROM usr.admin WHERE username = %s"
     AuthDBDUserRealmQuery "SELECT md5(username || ':Intra:' || 
password_plain) FROM usr.admin WHERE username = %s"
     require valid-user
</Location>

Chová se to ale podivně: pokud mám nastaveno AuthDBDUserPWQuery a nemám 
AuthDBDUserRealmQuery, modul si stěžuje:
"[client 127.0.0.1] No AuthDBDUserRealmQuery has been specified". V 
dokumentaci se ale podle mého nic o závislosti jednoho na druhém nepíše.

Vyřešil jsem to AuthDBDUserRealmQuery s pouze jedním použitým parametrem, 
popř. jistě bude možné použít parametry 2 ale ten druhý dát do nějaké 
nesmyslné podmínky. Perl za normálních okolností tuším řve, že jste 
zadali 2 parametry ale chtěli jen jeden a nevím tudíž, jestli takhle to 
mám úplně ideálně.

Mnoho vyřešených případů mod_authn_dbd + digest se mi ale najít 
nepodařilo, jeden např. zde 
http://www.berenddeboer.net/rest/apache_dbd_digest.html

T.


Další informace o konferenci Linux