团队,我有一个关于使用Kerberos身份验证进行单点登录的问题 .
我们为域生成了一个keytab文件,如"POC.MAIL.COM",我们的服务器托管在"SW.MAIL.COM"上 . 当我们的应用程序在Websphere Application Server上运行时,我们尝试设置文档中给出的Kerberos配置(页面编号:167)http://www.redbooks.ibm.com/redbooks/pdfs/sg247771.pdf . 我们正面临着一个错误,即“ Cannot get credential for principal service HTTP/server1.SW.MAIL.COM@SW.MAIL.COM ” . 有人可以帮我解决这个问题吗?
如果需要任何其他信息,请发表评论 .
当我尝试在“Kerberos身份验证机制页面”上设置krb5.conf和keytab文件时,我们收到此错误 .
当我根据你的输入运行命令klist时,我得到如下输出
“密钥表:/etc/krb5/pocsso.keytab
参赛作品数:1
[1.]校长:HTTP /server1.sw.mail.com@POC.MAIL.COM KVNO:12“
UPDATE .
票证缓存:FILE:/ tmp / krb5cc_38698默认主体:pocsso1@POC.MAIL.COM有效开始过期服务主体01/09/2014 16:15 02/09/2014 02:21 krbtgt/POC.MAIL.COM@POC . MAIL.COM续约至08/09/2014 16:15
2 回答
仅在
Global security > SPNEGO web authentication
上指定它,而不是在Kerberos配置页面上指定它 . 如果krb5.conf文件中的keytab路径正确,则只提供conf文件的路径就足够了(keytab是可选的) .UPDATE
在过滤器定义中,您应该:
请在此处查看配置详细信息:Enabling and configuring SPNEGO web authentication using the administrative console
用于Java EE安全性的web.xml中的最小配置 . 并且您必须在服务器配置中启用
Application Security
,并将userRole映射到注册表中的某些用户/组 .有点迟到的答案 .
通过运行ktpass命令重新生成密钥表文件:
ktpass -out file.keytab -princ HTTP / server1.SW.MAIL.COM @ POC.MAIL.COM -mapuser your-user -pass your-pwd -ptype KRB5_NT_PRINCIPAL
解决错误:
生成密钥表文件时,可以归结为以下规则:
<service name>/<fully qualified hostname>@KerberosRealm
仔细检查主要服务的拼写
服务名称必须全部为大写,即HTTP而不是http
Kerberos领域也必须全部为大写,并且
必须在/ etc / host文件或DNS服务器中找到主机名 .
资料来源:
http://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/usec_kerb_auth_mech.html
http://www.redbooks.ibm.com/redbooks/pdfs/sg247771.pdf(第477页)