如何调试“无效”' Kerberos票证标题

时间:2015-12-03 15:21:32

标签: java spring security kerberos

我正在尝试使用Kerberos的Spring Security扩展,以便在Kerberos领域内部署Java Web应用程序,利用集成的Windows身份验证。

我使用提供的Spring Security SPNEGO auth w /基于表单的回退示例。一切看起来都在努力,以至于Web应用程序接收并检查了来自IE的票证,此时它无法验证以下异常:

  

GSSException:检测到有缺陷的令牌(机制级别:GSSHeader确实如此)   找不到合适的标签)

这是谈判标题:

  

协商YIGFBgYrBgEFBQKgezB5oDAwLgYKKwYBBAGCNwICCgYJKoZIgvcSAQICBgkqhkiG9xIBAgIGCisGAQQBgjcCAh6iRQRDTlRMTVNTUAABAAAAl7II4g4ADgA1AAAADQANACgAAAAGAvAjAAAAD1NIQVJFUE9JTlQtU1BTSEFSRVBPSU5ULURFVg ==

在使用Java跟踪源代码时,如果找不到'标记,则会出现此错误。结果在标题的开头是0x60(或反引号)。如果我使用ISO-8859-1对它进行base64解码,我可以看到第一个角色看起来像是我的反击,所以我现在卡住了。

运行最新版本的Java 7(在Java 8下我遇到了一个错误,其中' GSSContext srcName'为空 - 似乎是一个已知错误)。

任何关于标题可能非常明显的线索,或者如何进一步解码/调试它都会很棒。

1 个答案:

答案 0 :(得分:0)

好的 - 我一直是个白痴。在阅读了一篇关于如何强制使用NTLM而非Kerberos(建议使用服务器的IP而不是SPN来访问它)的文章后,我意识到我总是使用http://localhost:8080而不是SPN,在我的情况下是主机名http://sharepoint-sp:8080

如果我使用SPN URL,它现在似乎有效。我想我永远无法在Kerberos领域之外访问它或者使用SPN的某些别名,但这与我所阅读的关于它应该如何工作以及为什么它是安全的一切有关。

哦,希望这可以帮助有类似问题的人。