使用通过 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 托管)时无法使用热重载