Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111      112      113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 112. Модуль Apache mod_authz_dbd

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

Этот модуль также может предоставлять возможности входа/выхода пользователей из базы данных. Они, вероятно, будут иметь наибольшую ценность при использовании в сочетании с mod_authn_dbd .

Этот модуль полагается на mod_dbd указание внутреннего драйвера базы данных и параметров соединения, а также на управление соединениями с базой данных.

Требуемые директивы

Директивы Apache Require используются на этапе авторизации, чтобы гарантировать, что пользователю разрешен доступ к ресурсу. mod_authz_dbd расширяет типы авторизации с помощью dbd-group , dbd-login и dbd-logout .

Начиная с версии 2.4.8, выражения поддерживаются директивами DBD require.

Требовать dbd-группу

Эта директива определяет членство в группе, которое требуется пользователю для получения доступа.

 Требуется команда dbd-group
AuthzDBDQuery "ВЫБЕРИТЕ группу ОТ authz, ГДЕ пользователь = %s" 

Требовать dbd-логин

Эта директива определяет запрос, который должен быть выполнен, указывающий, что пользователь вошел в систему.

 Требовать dbd-логин
AuthzDBDQuery "ОБНОВИТЬ AUTHN SET login = 'true' WHERE user = %s" 

Требовать dbd-logout

Эта директива определяет запрос, который должен быть выполнен, указывающий, что пользователь вышел из системы.

 Требовать dbd-logout
AuthzDBDQuery "ОБНОВИТЬ AUTHN SET login = 'false' WHERE user = %s" 

Вход в базу данных

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

Это работает путем определения двух специальных Require типов: Require dbd-login и Require dbd-logout . Подробнее об использовании см. пример конфигурации ниже.

Интеграция входа в систему

Некоторые администраторы могут захотеть внедрить управление сеансом на стороне клиента, которое работает совместно с возможностями входа/выхода на стороне сервера, предлагаемыми этим модулем, например, путем установки или удаления файла cookie HTTP или другого подобного токена при входе или выходе пользователя. .

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

Пример конфигурации

 # конфигурация mod_dbd
DBDriver pgsql
DDBParams "dbname=apacheauth user=apache pass=xxxxxx"
ДБДмин 4
ДБДСохранить 8
ДБМакс. 20
DBDExptime 300
<Каталог "/usr/www/my.site/team-private/">
 # mod_authn_core и конфигурация mod_auth_basic
 # для mod_authn_dbd
 Основной тип авторизации
 Команда AuthName
 База данных AuthBasicProvider
 # mod_authn_dbd SQL-запрос для аутентификации вошедшего в систему пользователя
 AuthDBDUserPWQuery \
 "ВЫБЕРИТЕ пароль ОТ AUTHN, ГДЕ пользователь = %s И логин = 'true'"
 # конфигурация mod_authz_core для mod_authz_dbd
 Требуется команда dbd-group
 # конфигурация mod_authz_dbd
 AuthzDBDQuery "ВЫБЕРИТЕ группу ОТ authz, ГДЕ пользователь = %s"
 # когда пользователь не прошел аутентификацию или авторизацию,
 # пригласить их войти в систему; эта страница должна содержать ссылку
 # в /team-private/login.html
 ErrorDocument 401 "/login-info.html"
 <Файлы "login.html">
 # не требуйте, чтобы пользователь уже был авторизован!
 AuthDBDUserPWQuery "ВЫБЕРИТЕ пароль ОТ AUTHN WHERE user = %s"
 # действие dbd-login выполняет оператор для входа пользователя
 Требовать dbd-логин
 AuthzDBDQuery "ОБНОВИТЬ AUTHN SET login = 'true' WHERE user = %s"
 # вернуть пользователя на реферальную страницу (если есть) после
 # успешный вход в систему
 AuthzDBDLoginToReferer включен
 </файлы>
 <Файлы "logout.html">
 # Действие dbd-logout выполняет оператор для выхода пользователя из системы
 Требовать dbd-logout
 AuthzDBDQuery "ОБНОВИТЬ AUTHN SET login = 'false' WHERE user = %s"
 </файлы>
</Каталог> 


Директива AuthzDBDLoginToReferer

Описание:Определяет, следует ли перенаправлять клиента на страницу перехода при успешном входе в систему или выходе из системы, если Referer присутствует заголовок запроса.
Синтаксис: AuthzDBDLoginToReferer On|Off
По умолчанию: AuthzDBDLoginToReferer Off
Контекст:каталог
Положение дел:Расширение
Модуль:mod_authz_dbd

В сочетании с Require dbd-login или Require dbd-logout это дает возможность перенаправить клиента обратно на страницу Referring (URL-адрес в Referer заголовке HTTP-запроса, если он присутствует). Когда нет Referer заголовка, AuthzDBDLoginToReferer On будет проигнорирован.



Директива AuthzDBDQuery

Описание:Укажите SQL-запрос для необходимой операции
Синтаксис: AuthzDBDQuery query
Контекст:каталог
Положение дел:Расширение
Модуль:mod_authz_dbd

Указывает AuthzDBDQuery SQL-запрос для запуска. Цель запроса зависит от Require действующей директивы.

  • При использовании с Require dbd-group директивой он определяет запрос для поиска групп для текущего пользователя. Это стандартная функциональность других модулей авторизации, таких как mod_authz_groupfile и mod_authz_dbm . Значение первого столбца каждой строки, возвращаемой оператором запроса, должно быть строкой, содержащей имя группы. Может быть возвращено ноль, одна или несколько строк.
     Требовать dbd-группу
    AuthzDBDQuery "ВЫБЕРИТЕ группу ИЗ групп, ГДЕ пользователь = %s" 
  • При использовании с директивой Require dbd-login или Require dbd-logout она никогда не откажет в доступе, а вместо этого выполнит оператор SQL, предназначенный для входа или выхода пользователя из системы. Пользователь должен быть уже аутентифицирован с помощью mod_authn_dbd .
     Требовать dbd-логин
    AuthzDBDQuery "ОБНОВИТЬ AUTHN SET login = 'true' WHERE user = %s" 

Во всех случаях идентификатор пользователя будет передаваться как один строковый параметр при выполнении SQL-запроса. На него можно ссылаться в операторе запроса, используя %s спецификатор формата.



Директива AuthzDBDRedirectQuery

Описание:Укажите запрос для поиска страницы входа для пользователя
Синтаксис: AuthzDBDRedirectQuery query
Контекст:каталог
Положение дел:Расширение
Модуль:mod_authz_dbd

Указывает необязательный SQL-запрос, который следует использовать после успешного входа в систему (или выхода из системы) для перенаправления пользователя на URL-адрес, который может быть специфичным для пользователя. Идентификатор пользователя будет передан как один строковый параметр при выполнении SQL-запроса. На него можно ссылаться в операторе запроса, используя %s спецификатор формата.

 AuthzDBDRedirectQuery "ВЫБЕРИТЕ страницу пользователя ИЗ страниц пользователя, ГДЕ пользователь = %s" 

Значение первого столбца первой строки, возвращаемое оператором запроса, должно быть строкой, содержащей URL-адрес, на который следует перенаправить клиента. Последующие строки будут игнорироваться. Если строки не возвращаются, клиент не будет перенаправлен.

Обратите внимание, что AuthzDBDLoginToReferer имеет приоритет, если установлены оба.



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111      112      113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru