在Azure AD B2C中将自定义声明(用户订阅或角色列表作为示例)包含在令牌中之前有哪些方法,前提是声明存储在自己的服务器上某个位置(在B2C中不可用)? 目标是在令牌中提出索赔,以避免在每次请求时额外往返存储。
对该主题的调查使我有了以下方式:
通过Graph API添加自定义属性,配置为包含在JWT中。属性值应与我们的数据存储保持同步。
自定义登录策略,如本文https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-rest-api-step-custom,但是如果我做对了,额外的第6步是用户以非限制方式访问公开API(请求不受保密,可能用于通过提交的UserId获得用户声明?
IdentityServer4联合网关http://docs.identityserver.io/en/release/topics/federation_gateway.html,允许在发布之前添加任何声明。
答案 0 :(得分:6)
您概述的前两种机制是在Azure AD B2C颁发的令牌中包含自定义声明的最常见和推荐的方法:
添加custom attribute和include it in the JWT。您可以启用自定义属性via the B2C UI或via the Graph API。您需要构建自己的机制,以使B2C中此属性的值与外部源via the Graph API保持同步。
您可以使用custom policy至add a step in your authentication flow to call a Rest API to obtain the claim and include it in the token。对Rest API的调用将由Azure AD B2C服务而不是用户的浏览器执行,因此它将是服务到服务调用(与客户端到服务调用),使用您的Rest API安全保护您用于身份验证的任何机密(例如Azure功能代码)。