Mod_auth_kerb: необязательное согласование Kerberos

Могу ли я настроить Mod_auth_kerb ( http://modauthkerb.sourceforge.net/configure.html) так, чтобы он выполнял необязательное согласование Kerberos:

  1. Если браузер настроен на согласование, Mod_auth_kerb выполнит согласование и аутентифицирует пользователя (и отправит REMOTE_USER)

  2. Если браузер не настроен на согласование, 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.

Другие вопросы по тегам