【问题标题】:Blazor Wasm .Net 5 - Implement both Individual User Accounts and Azure AD AuthenticationBlazor Wasm .Net 5 - 实现个人用户帐户和 Azure AD 身份验证
【发布时间】:2021-08-06 19:37:09
【问题描述】:

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

1. Individual User JWT Authorization(IdentityServer)

2. Azure AD Authentication

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

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();
    }
}

【问题讨论】:

    标签: c# azure-active-directory asp.net-identity identityserver4 blazor-webassembly


    【解决方案1】:

    快速回答是您的客户端应用程序和 API 更喜欢只需要处理一个授权服务器。支持多个会很麻烦。

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

    看到这个page

    【讨论】:

    • 我喜欢“IdentityServer”唯一的方法。不幸的是,我找不到如何配置 Blazor WASM 客户端应用程序以同时满足本地和 AzureAD 身份验证的示例。一些参考资料会很有帮助。
    • 您配置为仅接受 IdentityServer 登录的 Blazor 应用。然后在 IdentityServer 中添加对外部 AzureAD 身份验证的支持。 Blazor 应用将不知道 Azure AD
    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 2018-06-17
    • 1970-01-01
    • 2020-11-06
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多