.net ';协商;。从服务器接收的身份验证标头为';谈判,NTLM';

.net ';协商;。从服务器接收的身份验证标头为';谈判,NTLM';,.net,web-services,authentication,iis,windows-authentication,.net,Web Services,Authentication,Iis,Windows Authentication,我正在使用Windows身份验证模式/协商 服务器2012R2-IIS8.5。windows身份验证和asp.Net模拟处于启用状态 Web服务器正在serviceServer上调用ASMX 如果站点托管在默认的web站点(URL为http:/Test/access.apx)上,则称为服务服务器的asmx工作正常 但是如果将网站托管在同一个主机上的(),并将域映射到。 它打开了第1页,但调用失败。 获取以下错误 HTTP请求未经客户端身份验证方案“协商”授权。从服务器接收的身份验证标头为“协商,

我正在使用Windows身份验证模式/协商

服务器2012R2-IIS8.5。windows身份验证和asp.Net模拟处于启用状态 Web服务器正在serviceServer上调用ASMX

如果站点托管在默认的web站点(URL为http:/Test/access.apx)上,则称为服务服务器的asmx工作正常

但是如果将网站托管在同一个主机上的(),并将域映射到。 它打开了第1页,但调用失败。 获取以下错误

HTTP请求未经客户端身份验证方案“协商”授权。从服务器接收的身份验证标头为“协商,NTLM” 我试着去做有趣的事 如果URL为“http:/Test/access.apx”,则发送协商安全数据。但在()的情况下,它将发送NTLM安全上下文

我还将域设置为 委派给:“信任此计算机以委派给任何服务” 而不是尝试SPN“信任此帐户以授权给任何服务” 根据

如果是非服务器名称的网站,请建议如何将windows身份验证/协商上下文传递给asmx。 谢谢

终于搞定了

遵循步骤

  • 添加了新的AD/服务用户允许受信任的此用途委派给任何服务
--更新的SPN

setspn-s http/test Domain\serviceuser

setspn-s http/test.domain.com域\服务用户

开放IIS-

选择网站

选择身份验证

-禁用匿名

-启用-ASP.Net模拟

-启用-Windows身份验证-

设置提供程序协商,NTLM

选择网站

选择“配置编辑器”

选择“system.webServer/security/authentication/windowsAuthentication”

设置 将NTLM设置为False

useAppPoolCredential设置为True


在我的例子中,我有一个http网站(a),调用https网站(B),该网站本应回调http网站(a)。但问题是B的web.config中的URL地址指向https,因此它不起作用

所以我把原来网站的绑定(A)改为https,一切都开始工作了