如何使用 Azure AD 身份验证对 Blazor WebAssembly 到 Blazor Server api 进行身份验证

时间:2021-07-11 11:03:59

标签: azure-active-directory blazor blazor-webassembly

我使用 .NET 5 创建了 2 个项目,一个 Blazor WebAssembly 和 Blazor Server API。我能够使用 Azure AD 单点登录成功地独立登录到这两个应用程序。这两个应用目前都部署在本地。

现在我想保护服务器 API,但在配置 Blazor Webassembly 以使用 httpClient 对服务器 API 进行身份验证时遇到问题。我对在 Web 程序集中设置范围的内容感到困惑,因为大多数示例使用 Graph 或 Identity Server。任何人都有一个有效的例子或可以引导我走向正确的方向?谢谢

public class ServerAuthorizationMessageHandler : AuthorizationMessageHandler
{
    public ServerAuthorizationMessageHandler(IAccessTokenProvider provider, IConfiguration configuration,
        NavigationManager navigationManager)
        : base(provider, navigationManager)
    {
        var serverUrl = configuration["AppSettings:ServerUrl"];

        ConfigureHandler(
           authorizedUrls: new[] { serverUrl },
           scopes: new[] { "api://lkjlkj/ReadAccess" }
        );
    }
}

程序.cs

builder.Services.AddHttpClient("Server", client => client.BaseAddress = new Uri(serverUrl))
          .AddHttpMessageHandler<ServerAuthorizationMessageHandler>();

        builder.Services.AddMsalAuthentication(options =>
        {
            builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
            options.ProviderOptions.DefaultAccessTokenScopes.Add("???????");

1 个答案:

答案 0 :(得分:0)

哦! Visual Studio 2019 有一个内置的 Blazor 模板,用于这个确切的场景!!

选择 Blazor Web Assembly 并选择在 ASP .NET 核心中托管的选项

相关问题