我在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请求未经授权使用客户端身份验证方案 '协商&#39 ;.从服务器收到的身份验证标头是 '协商'
检查上面的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服务,因此很多答案都不适用(我认为)。
我已经达到了调试技巧和ADFS知识的底层。不幸的是,我没有设置这个系统而且我无法访问那些做过的人。
非常感谢任何建议。
答案 0 :(得分:0)
事实证明,401 Unauthorized是在ADFS https://<ADFS_HOST>/adfs/services/trust/13/windowstransport
的Windows端点上。
这与ADFS配置,证书,权限等无关。
我按照https://www.risual.com/2011/10/28/adfs-2-0-401-unauthorized-access/中的步骤禁用了注册表中的LookBackCheck,一切正常。