apache: аутентификация и авторизация #10: авторитарность
2 Jun 2008, 18:28, apache
Модули процесса аутентификации (mod_auth_basic , mod_auth_digest) и модули авторизации (mod_authz_user, mod_authz_groupfile) имеют директивы, отвечающие за авторитарность этих модулей: AuthBasicAuthoritative On|Off , AuthzUserAuthoritative On|Off , ` AuthzGroupFileAuthoritative On |
Off. Эти директивы позволяют продолжить процесс аутентификации и авторизации следующим модулям. По-умолчанию эти модули авторитарны, т.е. Auth*Authoritative On`. |
В модуле mod_auth_basic авторитарность работает следующим образом. Обычно, каждый провайдер аутентификации, перечисленный в директиве AuthBasicProvider
, пытается аутентифицировать пользователя и, если пользователь не был найден модулем, доступ будет запрещён с ответом 401 Authorization Required
. Выключение авторитарности модуля - AuthBasicAuthoritative Off
- для таких случаев позволяет не запрещать сразу доступ, а предоставить возможность аутентифицировать пользователя другим модулям. Например, модулям сторонних производителей, которые не могут быть подключены с помощью директивы AuthBasicProvider
. Порядок обработки запроса такими модулями не конфигурируется и определяется в их исходном коде.
Для модуля mod_authz_user, например, отключение авторитарности - AuthzUserAuthoritative Off
- позволяет продолжить авторизацию следующим модулям (например, mod_authz_groupfile), если не нашлось информации об аутентифицированном пользователе. Пример:
...
AuthzUserAuthoritative Off
Require user john group developers
Модуль mod_authz_user не сможет авторизовать пользователя tom (так как авторизоваться может только пользователь john) и, так как он неавторитарен, позволит продолжить авторизацию следующему модулю - mod_authz_groupfile, которые проверит, принадлежит ли пользователь tom группе developers.
Если все модули в процессе авторизации не смогли авторизовать пользователя и были неавторитарными, последним отработает модуль mod_authz_default, которые запретит доступ 401 Authorization Required
.