将声明添加到令牌Azure B2C中

st1*_*st1 8 azure-ad-graph-api azure-ad-b2c

如果声明存储在自己的服务器上某个位置(在B2C中不可用),那么在Azure AD B2C中将自定义声明(用户订阅或角色列表作为示例)包含在令牌中的方法有哪些?目标是在令牌中提出索赔,以避免在每次请求时额外往返存储.

对该主题的调查使我有以下方式:

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

  2. 自定义登录策略,如本文https://docs.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允许在发布之前添加任何声明.

Sac*_*aca 11

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

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

  2. 您可以使用自定义策略,以在身份验证流程中添加步骤调用REST API,以获得要求,它包括在令牌.对Rest API的调用将由Azure AD B2C服务而不是用户的浏览器执行,因此它将是服务到服务调用(与客户端到服务调用),保留您用于的任何机密使用Rest API安全进行身份验证(例如Azure功能代码).

  • 据我了解,如果我想使用选项 1,我必须包含归因于其中一个用户流的此自定义?我与该线程的作者有一个非常相似的案例,但我不想在登录和注册页面中公开自定义属性。我希望自定义字段由另一个服务管理(我已经使用 Graph API 做到了),并且我想将其包含到 JWT 令牌中。 (3认同)