10

我正在尝试将 Kerberos 身份验证连接到 SOAP 服务 wsdl 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)
4

2 回答 2

3

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

于 2015-08-15T19:42:37.820 回答
1

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

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

于 2015-08-20T13:01:27.953 回答