新KerberosToken上的PAC登录信息格式错误

时间:2015-01-29 17:58:59

标签: java kerberos jaas

我使用代码here从Kerberos令牌获取身份验证信息。在那里,我已经配置了domainUsername和domainUserPassword,并按照readme.md中的指定运行它。

然后,从AD域中的浏览器,我连接到http://server:8080/spnego,我在打开的页面上看到我的用户名@ domain。该页面还应包含我的用户所属的AD组的SID。

查看服务器日志,我看到:

org.jaaslounge.decoding.DecodingException: Malformed PAC logon info.
    at org.jaaslounge.decoding.pac.PacLogonInfo.<init>(PacLogonInfo.java:209)
    at org.jaaslounge.decoding.pac.Pac.<init>(Pac.java:45)
    at org.jaaslounge.decoding.kerberos.KerberosPacAuthData.<init>(KerberosPacAuthData.java:13)
    at org.jaaslounge.decoding.kerberos.KerberosAuthData.parse(KerberosAuthData.java:21)
    at org.jaaslounge.decoding.kerberos.KerberosRelevantAuthData.<init>(KerberosRelevantAuthData.java:41)
    at org.jaaslounge.decoding.kerberos.KerberosAuthData.parse(KerberosAuthData.java:18)
    at org.jaaslounge.decoding.kerberos.KerberosEncData.<init>(KerberosEncData.java:136)
    at org.jaaslounge.decoding.kerberos.KerberosTicket.<init>(KerberosTicket.java:103)
    at org.jaaslounge.decoding.kerberos.KerberosApRequest.<init>(KerberosApRequest.java:62)
    at org.jaaslounge.decoding.kerberos.KerberosToken.<init>(KerberosToken.java:52)
    at com.example.ManualSpnegoNegotiateServlet.attemptNegotiation(ManualSpnegoNegotiateServlet.java:271)

第271行是以下

KerberosToken token = new KerberosToken(kerberosTokenData, keys);

该错误消息过于模糊。我不知道如何继续,我从不同的客户那里得到同样的错误。

有人对此有任何提示吗?

1 个答案:

答案 0 :(得分:1)

我自己想出了这个。事实证明,消息“格式错误的PAC登录信息”实际上是正确的。尝试获取“资源组数据”时代码失败。

最初,我认为PAC_LOGON_INFO structure自上次jaaslounge implementation编写以来(2010年的某个地方)发生了变化。我认为这是因为MS-PAC specification根本没有提到它。

实际上,问题来自一个完全不同的地方:KDC。它运行在Win Server 2012上,默认情况下Microsoft添加了resource SID Compression

你有它,如果你关闭KDC上的资源SID压缩,一切都会开始工作(不需要触摸任何其他内容,即jaaslounge的版本或无限制地修补hava JCE政策)。

相关问题