服务器端 webapi 调用上的 Windows 身份验证失败
Posted
技术标签:
【中文标题】服务器端 webapi 调用上的 Windows 身份验证失败【英文标题】:Windows authentication failing on server side webapi call 【发布时间】:2017-06-07 13:13:32 【问题描述】:我有一个托管在 IIS8 上的 MVC 5 Web 应用程序,它通过 Windows 身份验证进行保护。该应用程序有一个 WebApi2 控制器,我通过 MVC 控制器从其自身调用服务器端,但是在进行调用(POST 动词)时我不断收到 401 Unauthorized。
var client = new HttpClient();
var response = client.PostAsJsonAsync(url, dto).Result;
我尝试过但没有成功的事情:
将应用程序池用户身份设置为自定义帐户
使用帐户凭据启用 ASP.NET 模拟
编辑注册表以将域列入白名单(根据此解决方案Unable to get windows authentication to work through local IIS)
想知道其他人是否有任何建议/以前见过这个问题?
【问题讨论】:
你是怎么打电话的?如果您使用 http 调用另一个控制器方法,则需要发送授权标头。 我已经用我用来调用 api 端点的代码更新了问题 好的,是的,这是一个 HTTP 调用。 ASP.Net 安全上下文不会通过 HTTP 进行转换,因此您需要添加适当的授权标头。 好的,谢谢艾米。我会调查的:) 【参考方案1】:在实例化我的 HttpClient 时,此解决方案对我有用。
var clientHandler = new HttpClientHandler()
Credentials = CredentialCache.DefaultNetworkCredentials
;
var client = new HttpClient(clientHandler);
【讨论】:
以上是关于服务器端 webapi 调用上的 Windows 身份验证失败的主要内容,如果未能解决你的问题,请参考以下文章
如何调用部署在 azure 上的 WEB api 服务结构?
PaddleOCR在 windows下的webAPI部署方案