【发布时间】:2021-04-20 16:23:47
【问题描述】:
我的任务是开发 Blazor Webassembly 应用程序。此应用仅在公司网络内使用,出于安全原因,我们希望使用现有的 AD 和 NTLM 身份验证。
到目前为止,我已经在 IIS 中配置并运行了一个最小的 Blazor 应用程序。它配置为使用 Windows 身份验证,并且到目前为止有效。当我在浏览器中打开应用程序时,系统会询问我的凭据。 该应用程序还应该与同样受 Windows 身份验证保护的 .net 核心 webapi 进行通信。这个 webapi 安全也可以正常工作。当我在浏览器中打开它的 URL 时,系统会要求我提供我的凭据,然后页面会按应有的方式加载。
现在的问题:当我使用 HttpClient.GetAsync 从我的 Blazor 应用程序调用相同的 url(在浏览器中有效)时,我收到“401:未授权”错误。即使应用程序本身加载了相同的身份验证。有什么我必须做的吗? MSDN 文档非常庞大,我找不到解决方案。
在我添加的 ConfigureServices() 中的 WebApi Startup.cs 中
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddAuthorization();
在Configure()中
app.UseCors(x => x.AllowAnyMethod().AllowAnyHeader().SetIsOriginAllowed(origin => true).AllowCredentials());
app.UseAuthentication();
app.UseAuthorization();
PS: Blazor 应用程序使用 .NET Core 3.1 WebApi 使用 .NET 5.0
【问题讨论】:
-
请求中是否有认证头?
-
根据 Firefox,标头中没有任何类似于身份验证的内容。这有帮助。但是我如何以(正确的?)方式到达那里?
标签: asp.net-core authentication asp.net-web-api .net-core blazor