机器:windows server 2016 (IIS 10)
框架:ASP.net core 2.2、Web-Api
我有一个简单的ASP.NET 核心Web-api 服务器端和 angular 8 客户端。该应用程序当前托管在我的本地 IIS 上。web-api 包含没有任何授权属性的端点。只要将 IIS 配置设置为匿名身份验证,一切都会正常工作。
当我将 IIS 身份验证设置为Windows 身份验证时(我打算在未来使用它,在需要 Kerberos\AD 身份验证的其他端点中) - 尝试到达相同的端点时我收到错误 401 unauthorize 。
我发现没有办法避免它!
设置 Windows 身份验证后,如何以匿名方式到达端点?
根据错误:“Web 服务器未配置为匿名访问,并且未收到所需的授权标头” - 我可以发送带有“withCredentials”的标头:“false” - 尝试过但没有帮助。
在 Authentication -> Windows Authentication 初始属性中:
扩展保护:关闭
启用内核模式身份验证:true
这是我的 web-api 示例端点:
[Route("dosomething")]
[HttpGet]
public IActionResult DoSomething()
{
...
}
客户端:
getData(): Observable<someModel>
{
return this.httpClient.get<someModel>(<url>)
.pipe(
tap(response =>
{
do something
}),
catchError(error =>
{
<doSomeErrorHandling>
return throwError(error);
})
);
}
应用程序池定义为:
.NET CLR 版本:“无托管代码”
托管管道模式:集成
身份:ApplicationPoolIdentity