【问题标题】:ADFS - The HTTP request is unauthorized with client authentication scheme 'Negotiate'ADFS - HTTP 请求未经客户端身份验证方案“协商”的授权
【发布时间】:2018-11-07 11:07:20
【问题描述】:

我在 Server 2012 R2 上使用自定义属性存储配置了 ADFS。这会导致 ADFS 调用托管在 Windows 服务中的 WCF 服务。在调试Microsoft.IdentityServer.ServiceHost.exe 时,以下代码会抛出CommunicationException

var channel = trustChannelFactory.CreateChannel();
rawToken = channel.Issue(rst, out rstr);
trustChannelFactory.Close();

异常详情如下:

HTTP 请求未经客户端身份验证方案授权 '谈判'。从服务器收到的身份验证标头是 '谈判'。

检查上面的rst,我可以看到 ADFS 正在尝试调用 Windows 服务托管的 WCF:

net.tcp://<url>:8002/service/endpoint

我确保 windows 服务正在运行并通过 powershell 在 TCP 8002 上侦听:

netstat -aonp TCP | Select-String 8002
Get-Process -Id  

但奇怪的是,无论 Windows 服务是否正在运行,我都会收到此错误。就像来自 ADFS 的出站连接在某处被阻塞。

我试过关闭 Windows 防火墙,但没有任何区别。

由于这个版本的 ADFS 不依赖于 IIS,它是一个 Windows 服务,所以很多关于 SO 的答案都不适用(我认为)。

我的调试技能和 ADFS 知识已经达到了最低点。不幸的是,我没有设置这个系统,我也无法接触那些做过的人。

非常感谢任何建议。

【问题讨论】:

    标签: wcf wif adfs2.0


    【解决方案1】:

    事实证明,401 Unauthorized 位于 ADFS https://&lt;ADFS_HOST&gt;/adfs/services/trust/13/windowstransport 的 windows 端点上。

    这与 ADFS 配置、证书、权限等无关。

    我按照https://www.risual.com/2011/10/28/adfs-2-0-401-unauthorized-access/ 中的步骤禁用了注册表中的 LookBackCheck,一切正常。

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      相关资源
      最近更新 更多