使用 Windows 身份验证的 Blazor 服务器应用程序未经授权出现 401 错误

问题描述 投票:0回答:1

我正在构建供公司内部使用的 Blazor 服务器应用程序并使用 Windows 身份验证。该应用程序应该通过公开的控制器从另一个应用程序获取更新。我正在尝试测试控制器并获得未经授权的 401,但是我尝试点击它(Postman、浏览器、测试控制台应用程序、从 Blazor 服务器应用程序本身内部等)。我正在运行 .NET 6 并使用 Visual Studio 搭建应用程序,并从 Blazor 服务器应用程序的创建项目向导中选择 Windows 身份验证。我正在使用 IIS Express 选项从 Visual Studio 运行该应用程序。这是我在控制台应用程序中设置的简单测试,只是试图从控制器获得积极的响应:

public async Task<int> GetUpdateTestTimerResult()
{
    var client = new HttpClient();
    client.BaseAddress = new Uri("http://localhost:40871");
    var url = "api/updateTest";

    var value = await JsonSerializer.DeserializeAsync<int>
            (await client.GetStreamAsync(url), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
    return value;
}

我尝试在控制器上设置AllowAnonymous属性,但没有骰子。如何公开允许外部应用程序(也是公司内部/本地)访问的控制器?

asp.net-core authentication blazor-server-side windows-authentication
1个回答
0
投票

调查问题后,使用

UseDefaultCredentials
将帮助我们解决问题。

        HttpClientHandler handler = new HttpClientHandler()
        {
            UseDefaultCredentials = true
        };
        var client = new HttpClient(handler);
        client.BaseAddress = new Uri("http://localhost:8008/");
        var url = "error?handler=api";

        var response = await client.GetAsync(url);
        return new JsonResult(response);

测试结果

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.