【问题标题】:Claims based authorization token in Azure B2C and .Net Core 2.0Azure B2C 和 .Net Core 2.0 中基于声明的授权令牌
【发布时间】:2019-12-16 05:26:22
【问题描述】:

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

是否可以在检索到 B2C 令牌后添加群组声明?

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

如果这些不正确,我是否应该为这些组制作第二个授权令牌,然后在我发送请求时在我的标头中使用它?

【问题讨论】:

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


    【解决方案1】:

    您可以在 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 颁发的令牌添加组声明:Get user membership groups in the claims with Azure AD B2C

    【讨论】:

    • 每次请求到达需要身份验证的控制器/操作时是否执行此操作?这似乎需要太长时间。我的意思是问如何将组声明添加到令牌中,然后将其发送给客户端,这样 MS Graph 就不需要多次查询了。
    • @afriedman111 ,目前无法实现,您可以如上所示为功能请求投票。
    • 感谢南的回复,我就是这么怀疑的。
    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 2017-06-08
    • 2018-12-25
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多