SpNego:检测到有缺陷的令牌

时间:2011-11-09 04:03:37

标签: java wcf kerberos spnego wsit

我有一个连接到WCF服务的java客户端。此服务配置为在主机上作为单独的域用户运行(即不作为本地服务或网络服务)。服务在其WSDL中发布userPrincipalName。

在SpNego令牌交换期间,我在客户端

中收到以下异常
Defective token detected (Mechanism level: AP_REP token id does not match!)
This is the call stack:
    at sun.security.jgss.spnego.SpNegoContext.initSecContext(SpNegoContext.java:450)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:230)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:162)

如果我将WCF服务配置为在本地系统帐户下运行,则SpNego令牌交换可以正常工作。 我是否需要修改未在本地系统帐户下运行的服务的代码?

更新-1

通过让C#客户端与WCF服务连接进行一些调试后,我发现C#客户端正在使用名为MS-SPNG的SpNego协议的修改版本。 Java 6是否支持此功能?当我检查令牌时,我得到一个关于不支持的机制1.2.840.113554.1.2.2.3的错误。

1 个答案:

答案 0 :(得分:1)

这些链接解释了发生了什么。 MS具有SpNego协议的扩展,当我们以用户身份运行WCF服务(即不是本地服务等)时,它会启动。 This是新协议的MS规范,here是解释变通方法的openjdk文档。