URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7549
[ Назад ]

Исходное сообщение
"Apache 2.4.2 - аутентификация через digest и dbm"

Отправлено Smjbv , 07-Июн-12 14:38 
Использую Apache 2.4.2 под виндой. Дистрибутив Apache Lounge (http://www.apachelounge.com/).
Хочу сделать digest-авторизацию к каталогам сайта с использованием базы данных dbm.
Все нужные модули подключены:
mod_authn_core.so
mod_auth_basic.so
mod_auth_digest.so
mod_authn_dbm.so

Файл .htaccess:

    AuthType Digest
    AuthName "user1 realm"
    AuthDigestProvider dbm
    AuthDBMType default
    AuthDBMUserFile 1/p3
    Require user user1

1/p3 – база данных паролей

Пытаюсь создать базу паролей.
htdigest.exe – с базами данных не работает
htdbm.exe – не работает с digest-авторизацией
Пробую пока вручную через testdbm.exe (из набора утилит GnuWin32) и md5.exe.
Пользователь и его realm – "user1:user1 realm"
Пароль - 123
Получаю хеш - 299CAE02BEA2F270F0077B5A1772E734

В testdbm.exe создаю запись:
Ключ - "user1:user1 realm"
Данные – "299CAE02BEA2F270F0077B5A1772E734"
Все вроде получается.
При заходе в защищенный каталог на сайте выводится окно запроса пароля, realm выводится правильный. Ввожу логин - user1, пароль – 123, но не пускает!

В error.log появляется такая запись:

[Wed Jun 06 15:57:49.389625 2012] [auth_digest:error] [pid 3108:tid 1328] [client 127.0.0.1:2071] AH01790: user `user1' in realm `user1 realm' not found: /01, referer: http://127.0.0.1/

В базе данных логин/хеш есть – проверял утилитой testdbm.exe.
/01 - запароленный каталог на веб-сайте

В основном конфиге на каталог веб-сайта стоит опция:

    AllowOverride AuthConfig


Содержание

Сообщения в этом обсуждении
"Apache 2.4.2 - аутентификация через digest и dbm"
Отправлено Smjbv , 09-Июн-12 16:25 
Какая-то непонятка с форматами dbm-файла.
Тот dbm-файл, который созадет testdbm.exe не подходит к апачу.
Создаю dbm-файл апачевской утилитой:

htdbm -b -c -p <файл паролей>"user1_realm1" a599ac0dc7d3730da2f191ee7132fa22

Потом в hex-редакторе заменяю "user1_realm1" на "user1:realm1"
И все работает без проблем!

Подскажите чем можно создавать корректный dbm-файл??