繁体   English   中英

Blazor Wasm.Net 5 - 实现个人用户帐户和 Azure AD 身份验证

[英]Blazor Wasm .Net 5 - Implement both Individual User Accounts and Azure AD Authentication

下面的 Microsoft 文档说明了如何使用两种不同的身份验证方法保护 Blazor WASM 托管应用程序。

1.个人用户JWT授权(IdentityServer)

2. Azure AD认证

需要通过在单个应用程序中结合两种身份验证机制来为最终用户提供两种选择。 用户应该能够从登录页面中选择其中一个选项。

Azure AD 选项只是为最终用户提供 SSO 体验,除此之外,所有授权逻辑都将使用个人用户帐户在本地处理。

一旦使用 Azure Adoption 对用户进行身份验证,应该有一种方法可以将用户与本地 ID 联系起来以处理授权逻辑等。

我做了很多在线研究,但我找不到实现这一点的指南或教程。 我试图通过组合代码来实现这一点,但我坚持:

  1. 在 Blazor 客户端登录页面中启用 Local/AzureAd 登录选项
  2. 将 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 更喜欢只需要处理一个授权服务器。 支持多个将非常混乱。

我的建议是您的应用程序只处理 IdentityServer,但允许通过 IdentityServer 登录到 Azure AD(联合身份验证)。 请参阅 IdentityServer 中 QuickStartUI 中的 ExternalController.cs 文件。

看到这个页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM