与Apache和Kerberos问题的SSO

我正在尝试使用Kerberos在我的Apache Web服务器上设置SSO,以便login到本地域的用户能够被立即识别并login。

我已经按照本指南的信,但一旦设置完成,我不能摆脱用户名/密码提示。

我使用Ubuntu 8.04,已经为Apache安装了mod_auth_kerb 5.4。

我的/etc/krb5.conf:

[libdefaults] default_realm = COMPANY.LOCAL [domain_realm] .company.local = COMPANY.LOCAL company.local = COMPANY.LOCAL [realms] COMPANY.LOCAL = { default_domain = company.local kdc = DC01.COMPANY.LOCAL:88 admin_server = DC01.COMPANY.LOCAL } 

我的Apacheconfiguration:

 <Location /> AuthType Kerberos AuthName "server login" KrbMethodNegotiate On KrbMethodK5Passwd On KrbAuthRealms COMPANY.LOCAL KrbServiceName HTTP Krb5KeyTab /etc/apache2/httpd.keytab KrbVerifyKDC off KrbLocalUserMapping on require valid-user </Location> 

Keytab是由我们的pipe理员使用

 ktpass -princ HTTP/[email protected] -mapuser hostname -crypto rc4-hmac-nt -ptype KRB5_NT_SRV_HST -pass CHOOSEPASSWORD -out httpd.keytab 

我已经发布了相关的chmod / chown命令。 在服务器上,我成功发出kinit HTTP/[email protected]并login。

kvno / klist输出:

 # kvno HTTP/[email protected] HTTP/[email protected]: kvno = 8 # klist -ke httpd.keytab Keytab name: FILE:httpd.keytab KVNO Principal ---- -------------------------------------------------------------------------- 8 HTTP/[email protected] (ArcFour with HMAC/md5) 

我已经configuration了我的浏览器(同时尝试ff和即在Windows7)传递凭据一起希望摆脱提示,但它不工作。

Apache错误日志说:

 [error] [client 10.0.0.1] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Key version number for principal in key table is incorrect) [error] [client 10.0.0.1] gss_accept_sec_context() failed: Invalid token was supplied (, No error) 

有没有人有什么build议,我需要得到这个工作?

如果我正在解释错误,我认为这意味着你在/etc/apache2/httpd.keytab中有一个旧版本的密钥。 每次通过kadmin为Kerberos主体更改密钥时,版本号都会增加,并且该密钥的旧版本将失效。

kinit命令/login只显示/etc/krb5.keytab中的主机密钥是完整的。 这并不一定意味着httpd.keytab中的kvno是有效的,您需要根据KDC进行检查。

针对您的KDC启动kadmin会话并调用getprinc <principalname> 。 find“Key:vno”,这告诉你KDC认为是什么版本号。 如果KDC拥有更新版本的密钥,则需要将此密钥重新导出到相关主机。 我会继续检查/etc/krb5.keytab中所有密钥的有效性,只是为了确保没有任何其他的时间炸弹潜伏在周围。

希望这有助于!