Apache2 Auth dbd - хешированный пароль md5 в базе данных, но apache сравнивает его с необработанным

У меня проблема с аутентификацией в Apache2 через pgsql. Соединение с базой данных выполнено успешно, и если я помещу хэш в поле пароля, он будет аутентифицирован, но как заставить apache 2.4 сравнивать пароль базы данных с локально вставленным паролем, который еще не хеширован. Я предполагаю, что я должен поставить метод хеширования авторизации в md5, но документация по какой-то причине несколько неполная.

<Location "/something">
    Header add Pragma "must-revalidate no-cache"
    Header add X-RequestTime "%t %D"
    ExpiresActive on
    ExpiresDefault "now"

    AuthName "Something"
    AuthType Basic 
    AuthUserFile "L:\Docs\mgrpass.txt" #does not take usernames and passwords
     #from there anymore. Takes them from database instead.

    Order allow,deny
    Allow from all

    SetEnv ERR_MAIL "[email protected]"
    SetEnv SCHEMA   "manager"
    SetEnv AUTHTYPE "manager"

    AuthBasicProvider socache dbd
    AuthnCacheProvideFor dbd
    AuthnCacheContext myServer

    # Here should be some hash config to convert local password
    # to md5 encrypted one... Help please :(

    Require valid-user

    AuthDBDUserPWQuery "SELECT parool as password FROM _usr WHERE email = %s"

    SetEnv "FORMAT"     "json"

    php_flag pgsql.log_notice off
    php_flag magic_quotes_gpc off
    php_flag output_buffering off
    php_admin_flag safe_mode_gid on

    Header add X-Timing "%D microseconds"
</Location>

person Oliver Tiit    schedule 02.06.2015    source источник


Ответы (1)


Нашел ответ.

Apache сам разбирает пароль. просто добавьте {SHA1} или $apr1$ перед паролем

AuthDBDUserPWQuery "SELECT CONCAT('{SHA}',parool_sha1) as password FROM _usr WHERE email = %s"
person Oliver Tiit    schedule 02.06.2015