Я реализовал SSO-аутентификацию, используя mod_auth_kerb на Apache. Мой конфиг выглядит так:
<Location /login/ >
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate on
KrbAuthoritative on
KrbVerifyKDC on
KrbAuthRealm D.ETHZ.CH
Krb5Keytab /etc/HTTP.keytab
KrbSaveCredentials on
RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>
Моя проблема в том, что без require valid-user
mod_auth_kerb даже не пытается аутентифицировать пользователя и в KERBEROS_USER
итоге оказывается (null)
. Если я добавлю require valid-user
, пользователь аутентифицируется автоматически, если браузер поддерживает его, но ему отображается уродливая модальная форма входа (аля HTTP Basic Auth), если браузер не поддерживает Kerberos Negotiate.
Чего я хочу добиться, так это того, что, если пользователь заходит /login/
, mod_auth_kerb пытается аутентифицировать пользователя с помощью Kerberos Negotiate. Если это не удается, пользователю будет представлена обычная форма входа в HTML.
Можно ли настроить Apache / mod_auth_kerb таким образом?