1

我有一个连接到 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 的错误。

4

1 回答 1

1

这些链接解释了正在发生的事情。MS 有一个 SpNego 协议的扩展,当我们以用户身份运行 WCF 服务时(即不是本地服务等),它就会启动。 是新协议的 MS 规范, 这里是 xplains 解决方法的 openjdk 文档。

于 2011-11-16T02:18:47.187 回答