apache: аутентификация и авторизация #3: mod_auth_basic
27 Apr 2008, 11:32, apache
Рассмотрим как работает mod_auth_basic. Содержимое .htaccess в директории /var/www/private/
,
соответствующей uri /private/
:
# Тип аутентификации
AuthType Basic
# Имя зоны, для которой необходима аутентификация,
# Иначе называется realm
AuthName "private zone"
# Провайдер аутентификации. В данном случае - mod_authn_file
AuthBasicProvider file
# Информация для mod_authn_file - путь к файлу с именами и паролями,
# Такой файл создаётся с помощью утилиты htpasswd или вручную - рассмотрим позже.
AuthUserFile /etc/apache2/conf/.htpasswds
# Доступ будет разрешён аутентифицированному пользователю john,
# т.е. будет авторизован только пользователь john.
Require user john
Происходит запрос в /private/
. При обработке запроса на этапе проверки доступа начинает
работать модуль mod_auth_basic. Он в запросе ищет заголовок Authentication. Если заголовка нет -
модуль прекращает обработку запроса и сервер возвращает ответ со статусом 401 Unauthorized и
заголовком WWW-Authenticate: Basic realm="private zone"
. Браузер, получив такой ответ,
выдаёт приглашение для ввода имени пользователя и пароля для зоны ‘private zone’. Получив
аутентификационные данные, браузер посылает такой же запрос с заголовком Authentication.
Имя пользователя и пароль кодируются в base64-кодировку так:
base64encode('john:secret') -> 'am9objpzZWNyZXQ='
и получается такой заголовок:
Authentication: Basic am9objpzZWNyZXQ=
Теперь, при обработке запроса, mod_auth_basic из заголовка Authentication получит аутентификационные данные:
base64decode('am9objpzZWNyZXQ=') -> 'john:secret'
Эти имя пользователя и пароль mod_auth_basic передаст провайдеру аутентификации (в нашем случае mod_authn_file) для проверки. При успешной проверке, запрос продолжит обрабатываться, при неуспешной mod_auth_basic опять прекратит обработку запроса с 401 Unauthorized.
Дальще будет.