Azure B2C和.Net Core 2.0中基于声明的授权令牌

时间:2019-08-08 13:20:58

标签: asp.net-core asp.net-core-2.0 azure-ad-b2c

我正在构建一个ASP .Net Core 2.0应用,并且想知道如何在我的后端将组声明添加到我的Azure B2C访问令牌。我使用用户的ID来查询MS Graph,以使用ADAL获取用户的组声明,并且每次用户点击控制器时都需要授权令牌上的组。我宁愿每次点击控制器时都不查询MS Graph。

是否有可能在检索到B2C令牌后将组声明添加到B2C令牌中?

如果没有,我应该将组存储为Session变量吗?

如果这些不正确,我应该在组中创建第二个授权令牌,然后在发送请求时在标头中使用它吗?

1 个答案:

答案 0 :(得分:0)

您可以在其中一个OpenID通知(即OnTokenValidated)中,并将用户的组(或角色,但它们不同)添加到ClaimsPrincipal。像这样:

options.Events = new OpenIdConnectEvents
{

    OnTokenValidated =  ctx =>
    {
        //query the user's groups using api 

        // add claims
        var claims = new List<Claim>
        {
            new Claim("groups", xxxx-xx-xx)
        };
        var appIdentity = new ClaimsIdentity(claims);

        ctx.Principal.AddIdentity(appIdentity);

        return Task.CompletedTask;
    },   
};

下面的链接是.net框架的代码示例,您可以进行修改以适合.net核心版本:

Authorize By Group in Azure Active Directory B2C

Azure AD B2C - Role management

您可以通过在Azure AD B2C反馈论坛中投票支持将团体声明添加到b2c发行的令牌中: