Blazor Wasm .Net 5 - Implement both Individual User Accounts and Azure AD Authentication(Blazor Wasm.Net 5-实现个人用户帐户和Azure AD身份验证)
问题描述
下面的Microsoft文档介绍了如何使用两种不同的身份验证方法保护Blazor WASM托管应用。
1. Individual User JWT Authorization(IdentityServer)
2. Azure AD Authentication
需要通过在单个应用程序中组合这两种身份验证机制来为终端用户提供这两种选择。用户应该能够从登录页面中选择其中一个选项。Azure AD选项只是为最终用户提供SSO体验,除此之外,所有授权逻辑都将使用单个用户帐户在本地处理。
使用Azure采用选项对用户进行身份验证后,应该有一种方法将用户与本地ID链接以处理授权逻辑等。
我做了很多在线研究,但我找不到实现这一点的指南或教程。我试图通过组合代码来实现这一点,但我遇到了困难:
- 在Blazor客户端登录页面中启用本地/AzureAd登录选项
- 将Azure AD用户与服务器中的本地用户链接
Blazor客户端代码
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddHttpClient("BlazorWasmIndvAuth.ServerAPI", client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress))
.AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
builder.Services.AddScoped(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("BlazorWasmIndvAuth.ServerAPI"));
//OPTION 1
//Azure Ad Authentication
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("api://123456/Api.Access");
});
//OPTION 2
//Individual User JWT authentication
builder.Services.AddApiAuthorization();
await builder.Build().RunAsync();
}
}
api
简单的答案是,您的客户端应用程序和推荐答案更愿意只处理一个授权服务器。支持多个将是相当混乱的。
我的建议是,您的应用程序只处理标识服务器,但允许通过标识服务器登录到Azure AD(联合身份验证)。请参阅标识服务器的QuickStartUI中的ExternalController.cs文件。
查看此page
这篇关于Blazor Wasm.Net 5-实现个人用户帐户和Azure AD身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Blazor Wasm.Net 5-实现个人用户帐户和Azure AD身份验证
基础教程推荐
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- WPF 模态进度窗口 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
