Azure AD中能否将CustomSecurityAttributes添加至idToken?
在Azure AD中把CustomSecurityAttributes加入idToken的方案
Azure AD默认不会将自定义安全属性(CustomSecurityAttributes)直接包含在id_token中,这类属性属于敏感安全配置项,但可以通过以下几种方式实现需求:
1. 针对Azure AD B2C租户:使用用户流自定义声明
如果你的场景是Azure AD B2C,可直接通过用户流配置映射:
- 登录Azure AD B2C门户,选择目标注册/登录用户流
- 进入「自定义声明」页面,点击「添加」,创建新声明并关联到用户的自定义安全属性
- 返回用户流的「应用程序声明」页面,勾选刚创建的自定义声明,保存并发布用户流
- 重新发起认证后,生成的id_token将包含该自定义安全属性
2. 通用方案:通过Microsoft Graph API获取
这是所有Azure AD版本都支持的官方方案,适合对安全性要求较高的场景:
- 用户完成认证拿到id_token后,使用有效的Graph API访问令牌,调用
GET /me?$select=customSecurityAttributes接口,直接获取用户的自定义安全属性 - 调用接口需申请
User.Read或User.ReadBasic.All权限,同时要确保调用者有权限读取目标用户的自定义安全属性
3. 替代方案:改用目录扩展属性
如果不需要自定义安全属性的权限管控能力,可改用Azure AD目录扩展属性,这类属性可配置到id_token中:
- 先在Azure AD中创建针对用户的目录扩展属性
- 打开应用注册的「清单」编辑器,找到
optionalClaims节点,添加idToken声明配置,示例如下:"optionalClaims": { "idToken": [ { "name": "extension_{你的应用客户端ID}_自定义属性名", "source": "user", "essential": false } ] } - 保存清单后重新发起认证,id_token就会包含该扩展属性
内容的提问来源于stack exchange,提问作者bingegneri
相关产品推荐
相关产品推荐

