C# HTTP请求未经客户端身份验证方案';协商;。从服务器接收的身份验证标头为';NTLM&x27;
几天前,当在客户端和wcf web服务之间使用Windows身份验证时,我对身份验证问题感到非常头痛。我收到的错误是“HTTP请求未经客户端身份验证方案“协商”授权。从服务器收到的身份验证标头是“NTLM”“。堆栈上的解决方案都不起作用,因为它们大多数都与旧方法相关。答案:问题是,针对此类问题的所有帖子都与旧的kerberos和IIS问题相关,其中代理凭据或AllowNTLM属性有帮助。我的情况不同。经过数小时从地面抓取蠕虫后,我发现IIS安装在IIS Windows身份验证提供程序列表中没有包含协商提供程序。所以我不得不把它加起来,再往上爬。我的WCF服务开始按预期进行身份验证。下面是屏幕截图,如果您在匿名身份验证关闭的情况下使用Windows身份验证, 您需要右键单击Windows身份验证并选择“提供程序”菜单项C# HTTP请求未经客户端身份验证方案';协商;。从服务器接收的身份验证标头为';NTLM&x27;,c#,windows,wcf,authentication,C#,Windows,Wcf,Authentication,几天前,当在客户端和wcf web服务之间使用Windows身份验证时,我对身份验证问题感到非常头痛。我收到的错误是“HTTP请求未经客户端身份验证方案“协商”授权。从服务器收到的身份验证标头是“NTLM”“。堆栈上的解决方案都不起作用,因为它们大多数都与旧方法相关。答案:问题是,针对此类问题的所有帖子都与旧的kerberos和IIS问题相关,其中代理凭据或AllowNTLM属性有帮助。我的情况不同。经过数小时从地面抓取蠕虫后,我发现IIS安装在IIS Windows身份验证提供程序列表中没有包
希望这有助于节省一些时间。我的解决方案是将AppPool从使用AppPoolIdentity设置为NetworkService标识。我已将旧版本的WCF升级为WCF 4,并做了以下更改,希望您也能做类似的更改 1。Web.config:
2。App.config:
对我来说,解决方案除了使用“Ntlm”作为凭证类型外:
XxxSoapClient xxxClient = new XxxSoapClient();
ApplyCredentials(userName, password, xxxClient.ClientCredentials);
private static void ApplyCredentials(string userName, string password, ClientCredentials clientCredentials)
{
clientCredentials.UserName.UserName = userName;
clientCredentials.UserName.Password = password;
clientCredentials.Windows.ClientCredential.UserName = userName;
clientCredentials.Windows.ClientCredential.Password = password;
clientCredentials.Windows.AllowNtlm = true;
clientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
}
这不是一个确切的问题,但这是谷歌搜索时的最高结果: 如果在调用托管在同一台计算机上的WCF服务时发现此问题,则可能需要填充
BackConnectionHostNames
注册表项
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1\U 0
MSV1\u 0
,指向新建,然后单击多字符串值
BackConnectionHostNames
,然后按ENTER键BackConnectionHostNames
,然后单击修改。
在“值数据”框中,键入用于计算机上本地共享的CNAME或DNS别名,然后单击“确定”。
- 在单独的行中键入每个主机名
有关详细信息,请参阅。我也遇到了同样的问题,要解决这个问题,请在iis->操作侧栏->基本设置->连接为…->特定用户
似乎与我现在遇到的问题相似。你能再贴一次照片吗?谢谢。你说的“再次发布图片”是什么意思?你在帖子中没有看到图片?对不起,这是代理的事情。。。这是一个链接,您应该添加自己的答案作为答案并接受它,以便人们可以投票支持:)。我在哪里可以找到此选项?在IIS中,身份验证设置不足这在客户端对我有效
clientCredentials.Windows.AllowNtlm
已过时