使用通过 Blazor WASM 使用 Windows 身份验证的 WebAPI

Posted

技术标签:

【中文标题】使用通过 Blazor WASM 使用 Windows 身份验证的 WebAPI【英文标题】:Consume WebAPI that uses Windows Authentication with Blazor WASM 【发布时间】:2020-11-07 22:07:04 【问题描述】:

我现在正在寻找几个小时。我有一个 C# Blazor WASM SPA,它从 C# WebAPI (netcore 3.1) 获取数据。对于身份验证,我目前使用 JWT。

我想切换到 SSO 解决方案。由于一切都在公司网络中运行,我想使用 Windows 身份验证。

我设法在 IIS 上为 Windows 身份验证设置了 API。但我真的被 Blazor 应用程序卡住了......

我尝试使用 WinAuth/Anonym 在 IIS 上进行设置,并使用简单的 GET 请求登录,希望 NTLM 协商将凭据从浏览器传递到 API。如果所有进一步的请求都使用 JWT,对我来说会很好。如果一切都可以使用 WinAuth,那就更好了。

但无论我尝试什么,我都不会工作。有没有人有教程或至少有一个概念可以作为开始使用?

【问题讨论】:

“行不通”是什么意思?究竟会发生什么? 不起作用,当调用来自 Blazor WASM 应用程序时,API 总是返回 400 Bad Request。甚至浏览器之前也要求我提供 Windows 凭据。当我尝试通过 swagger 调用 API 时,浏览器希望我输入 Windows 凭据,并且 API 调用可以正常工作。 听起来您的 webapi 被错误地暴露了。您应该得到带有身份验证方案建议的 401,以便客户端可以协商它。 400 永远不会工作。 【参考方案1】:

看看https://docs.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/hosted-with-azure-active-directory?view=aspnetcore-3.1。

本文介绍如何保护 Blazor 前端和 .NET Core 后端 api。

【讨论】:

以上是关于使用通过 Blazor WASM 使用 Windows 身份验证的 WebAPI的主要内容,如果未能解决你的问题,请参考以下文章

调试 Blazor WASM(Aspnet 托管)时无法使用热重载

Blazor Wasm 独立发布到 IIS

Blazor WASM 页面路由

Blazor_WASM之3:项目结构

使用 Blazor wasm Bearer Token 进行 SignalR 身份验证

Blazor Wasm 身份登录/注销事件