新 KerberosToken 上格式错误的 PAC 登录信息
Malformed PAC logon info on new KerberosToken
我正在使用代码 here 从 Kerberos 令牌获取身份验证信息。在那里我配置了 domainUsername 和 domainUserPassword 并且只是 运行 它如 readme.md.
中指定
然后,我从 AD 域中的浏览器连接到 http://server:8080/spnego,我在打开的页面上看到了我的用户名@域。该页面还应包含我的用户所属的 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);
该错误消息太含糊了。我不知道如何继续,我从不同的客户那里得到同样的错误。
有人对此有什么建议吗?
这个是我自己想出来的。事实证明 "Malformed PAC logon info" 这个消息实际上是正确的。代码在尝试获取 "Resource groups data".
时失败
一开始我以为PAC_LOGON_INFO structure has changed since the last jaaslounge implementation was written (somewhere in 2010). I thought that because the MS-PAC specification根本就没有提到
实际上,问题出在一个完全不同的地方:KDC。它在 Win Server 2012 上是 运行,Microsoft 在其中默认添加的版本 resource SID Compression。
你知道了,如果你在 KDC 上关闭资源 SID 压缩,一切都会开始工作(不需要触及任何其他东西,即 jaaslounge 的版本或使用无限制的 JCE 策略修补 hava)。
我正在使用代码 here 从 Kerberos 令牌获取身份验证信息。在那里我配置了 domainUsername 和 domainUserPassword 并且只是 运行 它如 readme.md.
中指定然后,我从 AD 域中的浏览器连接到 http://server:8080/spnego,我在打开的页面上看到了我的用户名@域。该页面还应包含我的用户所属的 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);
该错误消息太含糊了。我不知道如何继续,我从不同的客户那里得到同样的错误。
有人对此有什么建议吗?
这个是我自己想出来的。事实证明 "Malformed PAC logon info" 这个消息实际上是正确的。代码在尝试获取 "Resource groups data".
时失败一开始我以为PAC_LOGON_INFO structure has changed since the last jaaslounge implementation was written (somewhere in 2010). I thought that because the MS-PAC specification根本就没有提到
实际上,问题出在一个完全不同的地方:KDC。它在 Win Server 2012 上是 运行,Microsoft 在其中默认添加的版本 resource SID Compression。
你知道了,如果你在 KDC 上关闭资源 SID 压缩,一切都会开始工作(不需要触及任何其他东西,即 jaaslounge 的版本或使用无限制的 JCE 策略修补 hava)。