如何在Azure Active Directory令牌声明中添加组织架构信息?
Azure AD令牌中嵌入组织架构(CFO信息)的实现方法
当然有可行的实现方式,以下是几种落地方案:
1. 自定义属性 + 令牌声明映射
- 第一步:在Azure AD中为用户添加自定义扩展属性(比如命名为
cfo),把Francis Jefferson的用户UPN或ID填入Roary Moody的这个属性字段。 - 第二步:在你的企业应用或Azure AD B2C策略中配置令牌转换规则,将这个自定义属性映射为令牌的声明。
- 用PowerShell配置应用可选声明的示例:
Set-AzureADApplication -ObjectId <你的应用程序ID> -OptionalClaims @{ idToken = @( @{ Name = "extension_<你的租户ID>_cfo" Source = "user" Essential = $true AdditionalProperties = @("emit_as_claims") } ) }
extension_xxx_cfo声明,值就是CFO的信息。 - 用PowerShell配置应用可选声明的示例:
2. 登录后通过Microsoft Graph API实时获取
如果不想修改令牌结构,可以在用户登录成功后,让应用调用Microsoft Graph API遍历用户的上级关系,直到找到CFO:
- 先调用
/me/manager获取直接上级,再递归调用该接口,直到返回的用户拥有CFO相关的角色或属性。 - 示例Graph请求:
这种方式需要给应用申请GET https://graph.microsoft.com/v1.0/me/managerUser.Read.All权限,同时建议做缓存避免重复请求。
3. 基于Azure AD角色的间接判断
如果Francis Jefferson被分配了自定义CFO角色,可以:
- 在Azure AD中创建CFO自定义角色,分配给对应用户。
- 配置应用的可选声明,将
roles声明包含在令牌中。 - 应用端通过调用Graph API获取当前用户的上级链,检查其中是否有拥有CFO角色的用户。
关键注意点
- 自定义属性方案需要维护用户数据的准确性,人员变动时要及时更新属性值。
- 令牌映射需要确保应用有读取自定义属性的权限。
- Graph API方案要处理权限申请和缓存逻辑,减少API调用开销。
内容的提问来源于stack exchange,提问作者Gonzalo Martinez
相关产品推荐
相关产品推荐

