Модуль 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>
Размещение информации об авторизации
Если httpd был скомпилирован с APR версии 1.3.0 или выше, то при каждом запросе к серверу базы данных все значения столбцов в первой строке, возвращённой запросом, помещаются в среду, используя переменные среды с префиксом "AUTHENTICATE_".
Если, например, запрос к базе данных вернул имя пользователя, полное имя и номер телефона пользователя, программа CGI получит доступ к этой информации без необходимости выполнения второго независимого запроса к базе данных для получения этой дополнительной информации.
Это может значительно упростить кодирование и конфигурацию, требуемые в некоторых веб-приложениях.
Директива AuthDBDUserPWQuery
| Описание: | SQL запрос для поиска пароля пользователя |
|---|---|
| Синтаксис: | AuthDBDUserPWQuery query |
| Контекст: | директория |
| Статус: | Расширение |
| Модуль: | mod_authn_dbd |
Директива AuthDBDUserPWQuery определяет SQL-запрос для поиска пароля указанного пользователя. Идентификатор пользователя передаётся в качестве единственного строкового параметра при выполнении SQL-запроса. Его можно использовать в запросе с использованием спецификатора формата %s.
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
Значение первого столбца первой строки, возвращённой запросом, должно быть строкой, содержащей зашифрованный пароль. Последующие строки игнорируются. Если строк не возвращено, пользователь не будет аутентифицирован через mod_authn_dbd.
Если httpd был скомпилирован с APR версии 1.3.0 или выше, любые дополнительные значения столбцов в первой строке, возвращённой запросом, будут сохранены как переменные среды с именами вида AUTHENTICATE_COLUMN.
Формат зашифрованного пароля зависит от используемого интерфейса аутентификации (например, mod_auth_basic или mod_auth_digest). Более подробную информацию можно найти в разделе Форматы паролей.
Директива AuthDBDUserRealmQuery
| Описание: | SQL-запрос для поиска хэша пароля для пользователя и области. |
|---|---|
| Синтаксис: | AuthDBDUserRealmQuery query |
| Контекст: | директория |
| Статус: | Расширение |
| Модуль: | mod_authn_dbd |
Директива AuthDBDUserRealmQuery определяет SQL-запрос для поиска пароля указанного пользователя и области в процессе аутентификации по Digest. Идентификатор пользователя и область, в этом порядке, передаются как строковые параметры при выполнении SQL-запроса. Их можно использовать в запросе с использованием спецификаторов формата %s.
AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s"
Значение первого столбца первой строки, возвращённой запросом, должно быть строкой, содержащей зашифрованный пароль. Последующие строки игнорируются. Если строк не возвращено, пользователь не будет аутентифицирован через mod_authn_dbd.
Если httpd был скомпилирован с APR версии 1.3.0 или выше, любые дополнительные значения столбцов в первой строке, возвращённой запросом, будут сохранены как переменные среды с именами вида 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