将声明添加到令牌 Azure B2C

问题描述 投票:0回答:2

在 Azure AD B2C 中发布自定义声明(例如用户订阅或角色列表)之前,有哪些方法可以将其包含在令牌中,前提是声明存储在自己的服务器上的某个位置(在 B2C 中不可用)? 目标是在令牌中拥有声明,以避免每次请求时额外往返存储。

对该主题的调查使我得出以下方法:

  1. 通过 Graph API 添加自定义属性,配置为包含在 JWT 中。属性值应与我们的数据存储保持同步。

  2. 如本文中所示的自定义登录策略https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-rest-api-step-custom但是如果我猜对了,额外的第 6 步是用户以非限制方式访问公开可用的 API 的旅程(请求不受秘密保护,可能用于通过提供的 UserId 获取用户声明)?

  3. IdentityServer4 联合网关 http://docs.identityserver.io/en/release/topics/federation_gateway.html 允许在发布之前添加任何声明。

azure-ad-b2c azure-ad-graph-api
2个回答
28
投票

您概述的前两种机制是在 Azure AD B2C 颁发的令牌中包含自定义声明的最常见和推荐的方法:

  1. 添加自定义属性并将其包含在JWT中。您可以通过 B2C UI 或 Graph API 启用自定义属性。您需要构建自己的机制来保持 B2C 中此属性的值与您的外部源同步通过 Graph API 您可以使用自定义策略

    在身份验证流程中添加一个步骤来调用Rest API来获取声明并将其包含在令牌中
  2. 。对 Rest API 的调用将由 Azure AD B2C 服务而不是用户的浏览器执行,因此这将是服务到服务的调用(而不是客户端到服务的调用),从而保留您用于的任何机密。使用您的 Rest API 安全(例如 Azure 函数代码)进行身份验证。
  3. 现在可用于内置用户流程的另一个选项。

  4. 内置用户流程

0
投票
发送令牌之前(预览)

将是要使用的 API 连接器类型。

自定义政策

在用户旅程中添加编排步骤,以调用 Rest API 来获取声明并将其包含在令牌中。

对 Rest API 的此调用将由 Azure AD B2C 服务执行,而不是由用户的浏览器执行,因此这将是服务到服务的调用(而不是客户端到服务的调用),从而保留您使用的任何机密用于使用您的 Rest API 安全(例如 Azure 函数代码)进行身份验证。

有关如何实现此功能的更新文档可在自定义策略的 API 连接器文档中找到。

两者都可用

添加一个 自定义属性 并将其包含在 JWT 中

。您可以添加自定义属性

通过 B2C UI

通过图形 API 您需要构建自己的机制来保持 B2C 中此属性的值与您的外部源同步通过 Graph API 注意:通过图形 API 添加自定义属性会导致错误,该错误不会显示在“用户属性”边栏选项卡中。

此答案基于 saca 之前在其

answer

中提供的信息

© www.soinside.com 2019 - 2024. All rights reserved.