ADFS - HTTP 请求未经客户端身份验证方案授权 'Negotiate'

ADFS - The HTTP request is unauthorized with client authentication scheme 'Negotiate'

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

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

异常详情为:

The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate'.

检查上面的 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 知识已经到了谷底。不幸的是,我没有设置这个系统,而且我也无法接触到这样做的人。

如有任何建议,我们将不胜感激。

事实证明,401 Unauthorized 在 ADFS https://<ADFS_HOST>/adfs/services/trust/13/windowstransport 的 windows 端点上 https://<ADFS_HOST>/adfs/services/trust/13/windowstransport

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

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