【发布时间】: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 知识已经达到了最低点。不幸的是,我没有设置这个系统,我也无法接触那些做过的人。
非常感谢任何建议。
【问题讨论】: