我在Apache上使用mod_auth_kerb实现了SSO身份validation。 我的configuration如下所示:
<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甚至不尝试authentication用户和KERBEROS_USER结果是(null) 。 如果我添加require valid-user ,那么如果浏览器支持,用户将被自动validation,但如果浏览器不支持Kerberos协商,则会显示一个难看的模态login表单(ala HTTP Basic Auth)。
我想实现的是,如果用户访问/login/ ,mod_auth_kerb尝试通过Kerberos协商来validation用户。 如果失败,则会向用户呈现正常的HTMLlogin表单。
有没有可能以这种方式configurationApache / mod_auth_kerb?
当我构build了一个简单的单点login工具(将Kerberos与mod_auth_tkt合并)时,我做了一次这样的工作。 它需要一点点的经验:
/ webauth / login受到require valid-user指令的保护。 如果有人使用有效的Kerberos凭据连接,我们从REMOTE_USER获得用户名,给他们一个身份validationcookie,然后发送给他们。
Apacheconfiguration使用ErrorDocument请求将未经身份validation的用户redirect到/ webauth / require_authentication:
ErrorDocument 401 / webauth / require_authentication
这将执行以下操作:
login表单将完全符合您的期望:提供一个用户名/密码表单,validation相同的,然后给他们身份validationcookie。