我有一个java客户端连接到WCF服务。此服务被配置为作为单独的域用户(即不是本地服务或网络服务)在主机上运行。服务在其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#客户端正在使用一个名为姆斯潘的SpNego协议的修改版本。Java 6支持这个吗?当我检查令牌时,会得到一个关于不支持的机制1.2.840.113554.1.2.2.3的错误。
发布于 2011-11-16 02:18:47
这些链接解释了发生了什么。MS对SpNego协议有一个扩展,当我们以用户身份运行WCF服务(即不是本地服务等)时,它就会启动。这是新协议的MS规范,这里是openjdk,它提供了解决方案。
https://stackoverflow.com/questions/8060199
复制相似问题