0

机器: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

4

0 回答 0