本文介绍了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身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!