我正在尝试使用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中所有密钥的有效性,只是为了确保没有任何其他的时间炸弹潜伏在周围。
希望这有助于!