如何通过 Azure Active Directory 在 Blazor Server 中使用 Azure AppRoles

How to use Azure AppRoles in Blazor Server with Azure Active Directory

我有一个 up 和 运行 .NET 5 Web-API 与生产中的 Blazor 服务器客户端。我想使用应用程序角色从个人用户帐户切换到 Azure AD,以对我的控制器中的特定用户进行身份验证。我找到了很多关于 Webassembly 的信息,但 none 是关于 Blazor Server 的。

是否有人为 .NET 5/6 Web-Api 与 Blazor 服务器客户端和集成 Azure 应用程序角色提供了有效的解决方案?

应用程序已经在 Azure 门户等中注册,我只需要知道如何将应用程序角色特定的东西传递给我的 API,这样我的控制器就可以使用 [Authorize("Admin “)] 东西。我怀疑它也会使用 Bearer Tokens。

编辑: 非常感谢阅读。所以我发现如果我在我的控制器中使用类似这样的东西,只使用 [Authorize] 属性而不使用任何角色:

 var identities = HttpContext.User.Identities.ToList();
            foreach (var item in identities)
            {
                if (item.RoleClaimType == "admin")
                {
                    // return or do something
                }
            }

它会工作得很好,但必须有一些更流畅的解决方案,或者我这样做完全错了吗?当我查看 WASM 示例时,他们使用令牌获取 AppRoles,而控制器只需使用 [Authorize(Roles = "xyz")] 属性即可。我在这里错过了什么? :/

顺便说一句,这就是我的 Program.cs 现在的样子:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApi(options =>
            {
                builder.Configuration.Bind("AzureAd", options);
                options.TokenValidationParameters.RoleClaimType =
                    "admin";
                options.TokenValidationParameters.RoleClaimType = "doku";
            },
            options => { builder.Configuration.Bind("AzureAd", options); });

谢谢 guys/gals <3

请检查给定的参考文献是否对您有用。

服务器 API 应用程序可以授权用户访问安全 API 具有安全组、AAD 管理员角色和应用程序角色授权策略的端点

  • 在 SERVER 应用程序的 Program.cs 中,将声明指定为 roleclaim

示例:

     builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApi(options =>
            {
                Configuration.Bind("AzureAd", options);
                options.TokenValidationParameters.RoleClaimType = 
                    "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
            },
            options => { Configuration.Bind("AzureAd", options); });

  • 然后就可以在授权控制器上使用admin角色访问

    [授权(角色=“管理员”)]

  • App roles部分你可以看到两者的配置 服务器和客户端。

  • 在portal的manifest editor中编辑app角色然后给 适当的 api 权限,公开范围并授予管理员权限 同意 > 请参阅 Add app roles and get them from a token。并且 过程逻辑必须包含 api.

    所需的那些范围

Note : The appRoles manifest property of both the client and the server Azure portal app registrations must include the same configured roles.

请查看 this 以获取有关服务器和客户端应用程序指南的更多详细信息。

其他参考资料:

  1. using-app-roles-with-AAD-blazor-server-client scenario | codemaze.com
  2. quickstart-configure-app-expose-web-apis
  3. quickstart-configure-app-access-web-apis