Spec-Zone.ru › Apache HTTP Server

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API