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