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

时间:2018-05-28 21:07:53

标签: wcf wif adfs2.0

我在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知识的底层。不幸的是,我没有设置这个系统而且我无法访问那些做过的人。

非常感谢任何建议。

1 个答案:

答案 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,一切正常。