java - SpNego:检测到有缺陷的 token

标签 java wcf kerberos spnego wsit

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

在 SpNego token 交换期间,我在客户端中遇到以下异常

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 token 交换可以正常工作。 我是否需要修改不在本地系统帐户下运行的服务的代码?

Update-1

通过让 C# 客户端连接 WCF 服务进行一些调试后,我发现 C# 客户端正在使用名为 MS-SPNG 的 SpNego 协议(protocol)的修改版本。 。 Java 6 支持这个吗?当我检查 token 时,我收到有关不支持的机制 1.2.840.113554.1.2.2.3 的错误。

最佳答案

这些链接解释了正在发生的事情。 MS 有 SpNego 协议(protocol)的扩展,当我们作为用户(即不是本地服务等)运行 WCF 服务时,该扩展就会启动。 This是新协议(protocol)的 MS 规范,并且 here是解释解决方法的 openjdk 文档。

关于java - SpNego:检测到有缺陷的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8060199/

相关文章:

java - 尝试使用循环绘制多朵花

c# - 在控制台应用程序中等待异步操作后,WCF 客户端挂起任何操作

hadoop - 具有相同 kerberos 领域的两个集群

iis-7 - 从IIS中的WindowsAuthentication中删除NEGOTIATE

c# - 我如何处理 .NET 中的协商?

java - Scene2d适合非UI显示吗?

java - 如何在另一个 Activity 中显示点击的 ListView 项目

javascript - XHR 加载失败 : POST java spring

wcf - Silverlight 4 应用程序中的间歇性 Async_ExceptionOccurred 错误

c# - Access-Control-Allow-Origin 在 IIS 中,但不工作