配置Azure企业应用:在id_token中包含本地扩展属性
将onPremisesExtensionAttributes包含到Azure AD id_token的配置方法
核心结论
可以通过Azure AD应用Manifest的配置,将onPremisesExtensionAttributes中的字段添加到id_token声明里,无需额外调用Graph API,但需要完成可选声明配置+目录扩展属性映射两步操作,不是仅添加optionalClaims就能实现。
具体配置步骤
- 确定需要嵌入id_token的
onPremisesExtensionAttributes具体字段(比如extensionAttribute1至extensionAttribute15)。 - 编辑应用Manifest,找到
optionalClaims节点,添加id_token的声明配置,示例如下:
"optionalClaims": { "idToken": [ { "name": "extensionAttribute1", "source": "user", "essential": false, "additionalProperties": [] }, { "name": "extensionAttribute2", "source": "user", "essential": false, "additionalProperties": [] } // 按需添加其他需要的extensionAttribute字段 ] }
- 完成属性映射授权:
- 进入Azure AD应用注册页面,选中你的应用,进入「令牌配置」>「添加可选声明」,选择ID令牌类型,勾选需要的
extensionAttributeX字段后保存。 - 批量操作可使用PowerShell命令:
Set-AzureADApplicationExtensionProperty -ObjectId <你的应用ObjectID> -ExtensionPropertyNames @("extensionAttribute1", "extensionAttribute2")
- 进入Azure AD应用注册页面,选中你的应用,进入「令牌配置」>「添加可选声明」,选择ID令牌类型,勾选需要的
- 重新发起OIDC授权请求,新获取的id_token中就会包含指定的
extensionAttributeX声明。
关键注意事项
- 如果使用的是自定义扩展属性(非默认15个extensionAttribute),需先在Azure AD中注册该自定义属性,再执行上述配置。
- 确保应用已获得
User.Read权限并完成管理员同意,否则无法读取用户目录属性。 - 若属性值过长或包含特殊字符,可能无法嵌入id_token,此时仍需单独调用Graph API获取数据。
备选方案
如果上述配置无法生效(比如属性类型不支持嵌入id_token),则必须单独调用Graph API https://graph.microsoft.com/v1.0/me?$select=onPremisesExtensionAttributes 获取目标数据。
内容的提问来源于stack exchange,提问作者daleif
相关产品推荐
相关产品推荐

