服务器端 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部署方案

WebApi通过后端调用传递基础类型的参数

通过 Angular 调用时,Windows 身份验证不适用于 WebAPI

WebApi调用通用方法

WebApi控制器使用类库