使用Azure AD进行Blazor身份验证-检索用户角色

时间:2020-01-31 16:07:52

标签: azure-active-directory blazor

我已经成功设置了Blazor应用程序以向我工作的Azure租户进行身份验证。身份验证效果很好。我在Azure中使用清单中定义的appRoles进​​行了“应用程序注册”设置。我已经为应用程序添加了一些用户,并分配了这些角色,但是在身份验证之后,我没有在用户上下文中得到任何角色声明。

Startup.cs

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
                .AddAzureAD(options => Configuration.Bind("AzureAd", options));


        services.AddControllersWithViews(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));

        });

清单:

"appRoles": [
    {
        "allowedMemberTypes": [
            "User"
        ],
        "description": "Coming soon.",
        "displayName": "Viewer",
        "id": "{guid goes here}",
        "isEnabled": true,
        "lang": null,
        "origin": "Application",
        "value": "Viewer"
    },
    {
        "allowedMemberTypes": [
            "User"
        ],
        "description": "Coming soon.",
        "displayName": "Manager",
        "id": "{guid goes here}",
        "isEnabled": true,
        "lang": null,
        "origin": "Application",
        "value": "Manager"
    }
],

我正在尝试在身份验证后检索带有声明的角色,但是没有角色通过。显然,这使IsInRole无法正常工作,而且对我而言,我找不到任何代码示例可实现此目的。

如果有人能指出我正确的方向,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果已为用户分配了应用程序角色,则应在id令牌中将其返回。您可以使用https://jwt.io/解码id令牌。

enter image description here

我没有找到合适的样本,但是您可以参考此aspnetcore sample

相关问题