Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_authn_socache

Описание: Управляет кэшем учетных данных для аутентификации, чтобы разгрузить бэкенды
Статус: Базовый
Идентификатор модуля: authn_socache_module
Файл исходного кода: mod_authn_socache.c
Совместимость: Версия 2.3 и более поздние

Краткое описание

Сохраняет кэш учетных данных для аутентификации, чтобы не было необходимости в новом поиске на бэкенде для каждого запроса с аутентификацией.

Кэширование аутентификации

Некоторые пользователи, использующие более ресурсоемкую аутентификацию, такую как поиск в базе данных SQL (mod_authn_dbd), сообщили о неприемлемой нагрузке на своего поставщика аутентификации. Типичный пример — когда страница HTML содержит сотни объектов (изображения, скрипты, таблицы стилей, медиа и т. д.), и запрос на страницу генерирует сотни эффективно мгновенных запросов на аутентифицированный дополнительный контент.

mod_authn_socache предлагает решение этой проблемы, сохраняя кэш учетных данных для аутентификации.

Использование

Кэш аутентификации следует использовать в тех случаях, когда поиск для аутентификации создает значительную нагрузку на сервер или бэкенд или сеть. Аутентификация по файлу (mod_authn_file) или dbm (mod_authn_dbm) вряд ли извлекут выгоду, поскольку они сами по себе быстрые и лёгкие (хотя в некоторых случаях, например, с файлом на сетевом накопителе, кэширование может быть полезным). Другие поставщики, такие как аутентификация на основе SQL или LDAP, скорее всего, извлекут выгоду, особенно если наблюдается проблема с производительностью. Среди стандартных модулей, mod_authnz_ldap управляет собственным кэшем, поэтому только mod_authn_dbd обычно извлекут выгоду от этого кэша.

Основные правила кэширования для поставщика:

  1. Включите поставщика, для которого вы кэшируете, в директиве AuthnCacheProvideFor.
  2. Укажите socache перед поставщиком, для которого вы кэшируете, в своей директиве AuthBasicProvider или AuthDigestProvider.

Простой пример использования для ускорения mod_authn_dbd с использованием dbm в качестве движка кэша:

#AuthnCacheSOCache is optional.  If specified, it is server-wide
AuthnCacheSOCache dbm
<Directory "/usr/www/myhost/private">
    AuthType Basic
    AuthName "Cached Authentication Example"
    AuthBasicProvider socache dbd
    AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
    AuthnCacheProvideFor dbd
    Require valid-user
    #Optional
    AuthnCacheContext dbd-authn-example
</Directory>

Кэширование с настраиваемыми модулями

Разработчики модулей должны учитывать, что их модули должны быть включены для кэширования с mod_authn_socache. Для кэширования учетных данных, которые поставщик только что просмотрел или сгенерировал, предоставляется одна необязательная функция API ap_authn_cache_store. Примеры использования см. в r957072, в котором три поставщика authn включены для кэширования.

Директива AuthnCacheContext

Описание: Укажите строку контекста для использования в ключе кэша
Синтаксис:
AuthnCacheContext directory|server|custom-string
Значение по умолчанию:
AuthnCacheContext directory
Контекст: каталог
Статус: Базовый
Модуль: mod_authn_socache

Эта директива определяет строку, которая будет использоваться вместе с предоставленным именем пользователя (и областью в случае аутентификации Digest) при построении ключа кэша. Это служит для разграничения идентичных имен пользователей, обслуживающих разные области аутентификации на сервере.

Два специальных значения для этого — directory, которое использует контекст каталога запроса в качестве строки, и server, которое использует имя виртуального хоста.

По умолчанию directory, что также является наиболее консервативным значением. Это, вероятно, менее оптимально, так как (например), $app-base, $app-base/images, $app-base/scripts и $app-base/media каждый имеют свой отдельный ключ кэша. Лучшей политикой является присвоение имени AuthnCacheContext для поставщика паролей: например, файл htpasswd или таблица базы данных.

Контексты могут быть объединены в разных частях сервера, где учетные данные совместно используются. Однако это может стать вектором для межсайтовых или межприложениевых проблем безопасности, поэтому эта директива не допускается в контекстах .htaccess.

Директива AuthnCacheEnable

Описание: Включить кеширование Authn, настроенное в любом месте
Синтаксис: AuthnCacheEnable
Контекст: конфигурация сервера
Статус: Базовый
Модуль: mod_authn_socache

Эта директива обычно не требуется: она подразумевается, если кэширование аутентификации включено где-либо в httpd.conf. Однако, если она не включена нигде в httpd.conf, она по умолчанию не будет инициализирована и, следовательно, недоступна в контексте .htaccess. Эта директива гарантирует ее инициализацию, чтобы она могла использоваться в контексте .htaccess.

Директива AuthnCacheProvideFor

Описание: Укажите поставщика(ов) аутентификации, для которых нужно кэшировать
Синтаксис:
AuthnCacheProvideFor authn-provider [...]
Значение по умолчанию: None
Контекст: каталог, .htaccess
Переопределение: AuthConfig
Статус: Базовый
Модуль: mod_authn_socache

Эта директива указывает поставщика или поставщиков аутентификации для кэширования. Учетные данные, полученные от поставщика, не указанного в директиве AuthnCacheProvideFor, не будут кэшироваться.

Например, чтобы кэшировать учетные данные, полученные от mod_authn_dbd или от настраиваемого поставщика myprovider, но оставить те, которые получены от лёгких поставщиков, таких как поиск по файлам или dbm, в покое:

AuthnCacheProvideFor dbd myprovider

Директива AuthnCacheSOCache

Описание: Выберите поставщика бэкенда socache для использования
Синтаксис:
AuthnCacheSOCache provider-name[:provider-args]
Контекст: конфигурация сервера
Статус: Базовый
Модуль: mod_authn_socache
Совместимость: Дополнительные аргументы поставщика доступны в Apache HTTP Server 2.4.7 и более поздних версиях

Это глобальное значение для выбора поставщика для кэша общих объектов, за которым следуют необязательные аргументы для этого поставщика. Некоторые возможные значения для provider-name — "dbm", "dc", "memcache" или "shmcb", каждый из которых зависит от загрузки соответствующего модуля. Если не указано, будет использоваться значение по умолчанию для вашей платформы.

Директива AuthnCacheTimeout

Описание: Установите время ожидания для записей в кэше
Синтаксис:
AuthnCacheTimeout timeout (seconds)
Значение по умолчанию:
AuthnCacheTimeout 300 (5 minutes)
Контекст: каталог, .htaccess
Переопределение: AuthConfig
Статус: Базовый
Модуль: mod_authn_socache

Кэширование данных аутентификации может быть проблемой безопасности, хотя кэширование на короткий срок маловероятно вызовет проблему. Обычно хорошим решением является кэширование учетных данных в течение времени, необходимого для разгрузки бэкенда, но не дольше. Однако, если изменения в пользователях и паролях происходят редко, более длительное время ожидания может подойти вам. Значение по умолчанию 300 секунд (5 минут) является осторожным и достаточным для поддержания нагрузки на бэкенде, таком как dbd (SQL запросы к базе данных), низкой.

Это не следует путать с таймаутом сеанса, что является совершенно другой проблемой. Однако вы можете проверить своё программное обеспечение для управления сессиями на предмет того, могут ли кэшированные учетные данные «случайно» продлить сеанс, и иметь это в виду при настройке таймаута.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_authn_socache.html

Spec-Zone.ru

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