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>

Предоставление информации о входе в систему

При каждом запросе к серверу базы данных значения всех столбцов первой строки, возвращенной запросом, помещаются в окружение в виде переменных окружения с префиксом "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

Spec-Zone.ru

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