我们从控制器A(服务器端)向控制器B调用API
两者都在IIS中配置为分离站点
站点A -安全配置:
<security>
<authentication>
<windowsAuthentication enabled="true">
<providers>
<clear />
<add value="NTLM" />
<add value="Negotiate" />
</providers>
</windowsAuthentication>
<anonymousAuthentication enabled="false" />
</authentication>
</security>
站点B -安全配置:
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true"/>
<basicAuthentication enabled="true"/>
</authentication>
</security>
此处为请求代码:`
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
Credentials = new CredentialCache() {
{
httpRequest.RequestUri,
"NTLM",
CredentialCache.DefaultNetworkCredentials
} }
};
var response = await new HttpClient(httpClientHandler).PostAsync(url, data);
'当url为:https://serverName.domain:4444/home/apiName--一切正常
但是当https://VipName.domain:4444/home/apiName--得到401时
谢谢你的帮助!!!
在IIS日志中,我们可以看到用户未通过
1条答案
按热度按时间6tdlim6h1#
要让浏览器发送凭据,它必须是一个受信任的站点。有可能“serverName.domain”是受信任的,但“VipName.domain”不是。
Chrome和Edge使用“Internet选项”中的“受信任的站点”:
1.单击“安全”选项卡
1.单击“可信站点”,然后单击“站点”按钮
1.验证“VipName.domain”是否在列表中,如果不在则添加它。您可以使用通配符,如“https://*.domain”
Firefox有自己的设置,您可以在这里看到:https://superuser.com/a/878494/233663