Mod_auth_kerb: необязательное согласование Kerberos
Могу ли я настроить Mod_auth_kerb ( http://modauthkerb.sourceforge.net/configure.html) так, чтобы он выполнял необязательное согласование Kerberos:
Если браузер настроен на согласование, Mod_auth_kerb выполнит согласование и аутентифицирует пользователя (и отправит
REMOTE_USER
)Если браузер не настроен на согласование, Mod_auth_kerb не будет выполнять аутентификацию и отправит запрос без
REMOTE_USER
, Позже приложение выполнит аутентификацию запроса. Важно, что Mod_auth_kerb не должен возвращать 401 NEGOTIATE.
1 ответ
Я предполагаю, что настоящая проблема, которую вы пытаетесь решить, это поломка Internet Explorer. В любом другом браузере вы можете просто установить перенаправление ошибок в конфигурации Apache следующим образом.
<Location /login-spnego>
AuthType Kerberos
require valid-user
KrbMethodNegotiate on
KrbMethodK5Passwd off
Krb5Keytab /etc/httpd/conf/keytab
ErrorDocument 401 /login-simple
</Location>
Тем не менее, IE переходит в смертельную спираль, если он не был настроен на авторизацию Kerberos на данный сайт и никогда не отображает документ 401. Единственный способ обойти эту проблему, который я обнаружил, - это использовать правило mod_rewrite, основанное на HTTP_USER_AGENT
,
# IE fails hard if the user does not have a tgt for SPNEGO
# and either attempts NTLM or fails altogether depending on
# exact version. Redirect all IE login attempts to
# form rather than attempt pass-thru SPNEGO login.
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*MSIE
RewriteRule ^/login-spnego/ /login-simple/ [PT]
На самом деле это не решает ваш вопрос, но, насколько я знаю, просто нет способа сделать то, что вы хотите, без переписывания кода для mod_auth_kerb.