Kerberos error: GSSHeader did not find the right tag

Kerberos error: GSSHeader did not find the right tag

我正在尝试建立与 SOAP 服务 wsdl 的 Kerberos 身份验证连接 url。 我能够成功建立连接并拨打服务电话。 启动服务器后,我至少可以成功调用一次服务。 然而,在几次请求(1 个或更多)之后,我突然收到无效令牌错误。 一旦我收到错误,以后的调用将无法正常工作并且错误仍然存​​在。

如果我重新启动我的服务器,那么服务调用至少会再次运行一次。以上循环继续。

我无法弄清楚为什么令牌突然变得无效,尽管它早些时候有效。 并且重启服务器使令牌再次有效

这是错误堆栈跟踪:

Caused by: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)
        at sun.security.jgss.GSSHeader.<init>(GSSHeader.java:97)
        at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:237)
        at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)

没有看到 Base 64 值或十六进制转储,我假设客户端正在发送 NTLM 类型 1 令牌并且 Java 不支持 NTLM。

我找不到令牌无效的根本原因。但这是我解决这个问题的方法。

在我重新启动服务器并在上下文中再次加载 bean 后,我的身份验证第一次起作用。所以我将我的 spring bean 的范围更改为 prototype 以便每次创建新的代理 bean 时。