Модуль Apache mod_authn_dbd
| Описание: | Аутентификация пользователей с помощью базы данных SQL |
|---|---|
| Статус: | Расширение |
| Идентификатор модуля: | authn_dbd_module |
| Исходный файл: | mod_authn_dbd.c |
| Совместимость: | Доступен в Apache 2.1 и более поздних версиях |
Сводка
Этот модуль предоставляет интерфейсные модули аутентификации, такие как mod_auth_digest и mod_auth_basic, которые проверяют подлинность пользователей, находя их в таблицах SQL. Аналогичные возможности предоставляют, например, mod_authn_file.
Этот модуль использует mod_dbd для указания драйвера базы данных и параметров подключения, а также для управления подключениями к базе данных.
При использовании mod_auth_basic или mod_auth_digest этот модуль вызывается через AuthBasicProvider или AuthDigestProvider со значением dbd.
Производительность и кэширование
Некоторые пользователи аутентификации DBD в HTTPD 2.2/2.4 сообщали о том, что она создает чрезмерную нагрузку на базу данных. Чаще всего это происходит, когда HTML-страница содержит сотни объектов (например, изображений, скриптов и т. д.), каждый из которых требует аутентификации. Пользователям, столкнувшимся с этой проблемой или обеспокоенным ее возникновением, следует использовать mod_authn_socache для кэширования учетных данных и существенного снижения нагрузки на базу данных.
Пример конфигурации
В этом простом примере показано использование данного модуля в контексте механизмов аутентификации и DBD.
# mod_dbd configuration # UPDATED to include authentication caching DBDriver pgsql DBDParams "dbname=apacheauth user=apache password=xxxxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory "/usr/www/myhost/private"> # mod_authn_core and mod_auth_basic configuration # for mod_authn_dbd AuthType Basic AuthName "My Server" # To cache credentials, put socache ahead of dbd here AuthBasicProvider socache dbd # Also required for caching: tell the cache to cache dbd lookups! AuthnCacheProvideFor dbd AuthnCacheContext my-server # mod_authz_core configuration Require valid-user # mod_authn_dbd SQL query to authenticate a user AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s" </Directory>
Предоставление информации о входе в систему
При каждом запросе к серверу базы данных значения всех столбцов первой строки, возвращенной запросом, помещаются в окружение в виде переменных окружения с префиксом "AUTHENTICATE_".
Например, если запрос к базе данных возвращает имя пользователя, полное имя и номер телефона, программа CGI сможет получить доступ к этой информации без необходимости выполнять отдельный повторный запрос к базе данных.
Это может значительно упростить написание кода и настройку некоторых веб-приложений.
Директива AuthDBDUserPWQuery
| Описание: | Запрос SQL для получения пароля пользователя |
|---|---|
| Синтаксис: | AuthDBDUserPWQuery query |
| Контекст: | directory |
| Статус: | Расширение |
| Модуль: | mod_authn_dbd |
Директива AuthDBDUserPWQuery задает запрос SQL для получения пароля указанного пользователя. При выполнении запроса SQL идентификатор пользователя передается в качестве единственного строкового параметра. На него можно сослаться в операторе запроса, используя спецификатор формата %s.
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
Первое значение первого столбца первой строки, возвращенной оператором запроса, должно быть строкой, содержащей зашифрованный пароль. Последующие строки игнорируются. Если строки не возвращены, аутентификация пользователя с помощью mod_authn_dbd не выполняется.
Все дополнительные значения столбцов первой строки, возвращенной оператором запроса, сохраняются в качестве переменных окружения с именами вида AUTHENTICATE_COLUMN.
Формат зашифрованного пароля зависит от используемого интерфейсного модуля аутентификации (например, mod_auth_basic или mod_auth_digest). Дополнительные сведения см. в разделе Форматы паролей.
Директива AuthDBDUserRealmQuery
| Описание: | Запрос SQL для получения хеша пароля пользователя и области. |
|---|---|
| Синтаксис: | AuthDBDUserRealmQuery query |
| Контекст: | directory |
| Статус: | Расширение |
| Модуль: | mod_authn_dbd |
Директива AuthDBDUserRealmQuery задает запрос SQL для получения пароля указанного пользователя и области при дайджест-аутентификации. При выполнении запроса SQL идентификатор пользователя и область передаются в указанном порядке в качестве строковых параметров. На них можно сослаться в операторе запроса, используя спецификаторы формата %s.
AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"
Первое значение первого столбца первой строки, возвращенной оператором запроса, должно быть строкой, содержащей зашифрованный пароль. Последующие строки игнорируются. Если строки не возвращены, аутентификация пользователя с помощью mod_authn_dbd не выполняется.
Все дополнительные значения столбцов первой строки, возвращенной оператором запроса, сохраняются в качестве переменных окружения с именами вида AUTHENTICATE_COLUMN.
Формат зашифрованного пароля зависит от используемого интерфейсного модуля аутентификации (например, mod_auth_basic или mod_auth_digest). Дополнительные сведения см. в разделе Форматы паролей.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_authn_dbd.html