我们使用kerberos(我们想要SSO)配置tomcat以使用Windows身份验证 通过Internet Explorer从不同的客户端计算机发送HTTP Get,浏览器返回401,标题为Negotiate 我们将Internet Explorer配置为使用集成安全性,并将tomcat站点地址添加为本地Intranet。
在tomcat日志中,我看到:
Loaded from Java config
>>> KdcAccessibility: reset
>>> KrbCreds found the default ticket granting ticket in credential cache.
>>> Obtained TGT from LSA: Credentials:
client=wfuser@MY.DOM
server=krbtgt/MY.DOM@MY.DOM
authTime=20160111063609Z
startTime=20160111063609Z
endTime=20160111163609Z
renewTill=null
flags=INITIAL;PRE-AUTHENT
EType (skey)=17
(tkt key)=18
Search Subject for SPNEGO ACCEPT cred (<<DEF>>, sun.security.jgss.spnego.SpNegoCredElement)
Search Subject for Kerberos V5 ACCEPT cred (<<DEF>>, sun.security.jgss.krb5.Krb5AcceptCredential)
Found ticket for wfuser@MY.DOM to go to krbtgt/NIA.DOM@MY.DOM expiring on Mon Jan 11 18:36:09 IST 2016
可能是什么问题?这是一个互联网浏览器问题吗?或者tomcat问题?
答案 0 :(得分:1)
客户端和Tomcat服务器似乎位于不同的Kerberos领域(由于您标记帖子的方式,我将假设由Active Directory控制)。也就是说,Active Directory域客户端在MY.DOM中,但在NIA.DOM中是Tomcat服务器。为了使其按照您的预期工作,他们需要处于相同的AD域/ Kerberos领域。根据日志片段,客户端和KDC显示在同一个领域 - MY.DOM - 根据这个:
>>> Obtained TGT from LSA: Credentials:
client=wfuser@MY.DOM
server=krbtgt/MY.DOM@MY.DOM
但Tomcat服务器一定不能,因为它似乎要求客户端提供来自名为NIA.DOM的Kerberos域的推荐票。
Found ticket for wfuser@MY.DOM to go to krbtgt/NIA.DOM@MY.DOM expiring on Mon Jan 11 18:36:09 IST 2016
检查MY.DOM和NIA.DOM之间的AD信任关系,并确保它是双向的而不是破坏。