有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Kerberos错误:GSSHeader未找到正确的标记

我正在尝试将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)

共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    我找不到令牌无效的根本原因。但以下是我如何避开这个问题的

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