Ben*_*end 11 kerberos mod-auth-kerb apache-2.2
我在 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>
Run Code Online (Sandbox Code Playgroud)
我的问题是,没有require valid-user
, mod_auth_kerb 甚至不会尝试对用户进行身份验证并KERBEROS_USER
最终成为(null)
. 如果我添加require valid-user
,如果浏览器支持,用户会自动进行身份验证,但如果浏览器不支持 Kerberos Negotiate,则会显示一个丑陋的模式登录表单(ala HTTP Basic Auth)。
我想要实现的是,如果用户访问/login/
,mod_auth_kerb 会尝试通过 Kerberos Negotiate 对用户进行身份验证。如果失败,将向用户显示一个普通的 HTML 登录表单。
是否可以以这种方式配置 Apache/mod_auth_kerb?
lar*_*sks 12
当我构建一个简单的单点登录工具(将 Kerberos 与 mod_auth_tkt 合并)时,我已经做过一次。它需要一点技巧:
/webauth/login 受require valid-user
指令保护。如果有人使用有效的 Kerberos 凭据连接,我们会从 REMOTE_USER 获取他们的用户名,给他们一个身份验证 cookie,然后将他们发送出去。
Apache 配置使用ErrorDocument
请求将未经身份验证的用户重定向到 /webauth/require_authentication:
错误文档 401 /webauth/require_authentication
这将执行以下操作:
登录表单完全符合您的预期:提供用户名/密码表单,验证相同,然后给他们 auth cookie。
归档时间: |
|
查看次数: |
5856 次 |
最近记录: |