我在Apache上使用mod_auth_kerb实现了SSO身份验证。我的配置如下所示:
<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
,则在浏览器支持的情况下会自动对用户进行身份验证,但如果浏览器不支持Kerberos协商,则会显示出丑陋的模式登录表单(即HTTP基本身份验证)。
我要实现的是,如果用户访问/login/
,则mod_auth_kerb尝试通过Kerberos协商对用户进行身份验证。如果失败,将向用户显示普通的HTML登录表单。
是否可以通过这种方式配置Apache / mod_auth_kerb?
除非提供登录表单和适当的错误处理,否则这是正确的(预期的)行为。
—
BillThor