如何为Azure AD颁发的JWT访问令牌添加自定义声明
在Azure AD的Access Token中添加自定义声明
核心前提说明
你的需求中,aud字段指向的BackendSystem是令牌的受众,因此必须在BackendSystem对应的Azure AD应用注册中配置自定义声明,而非客户端myApplication的注册——Azure AD会针对受众应用的配置来生成对应的access token。
方法1:通过Azure门户添加固定值自定义声明(静态值场景)
这是最直观的方式,适合添加固定值如abc-123:
- 登录Azure门户,进入Azure Active Directory → 应用注册,找到
BackendSystem对应的应用(即aud值abc关联的应用)。 - 左侧菜单选择令牌配置,点击添加可选声明。
- 在弹出窗口中选择Access令牌类型,点击添加自定义声明。
- 填写配置项:
- 声明名称:
Example - 源:选择无(因为是固定值,无需从用户/目录属性获取)
- 声明值:
abc-123 - 勾选在access令牌中包含此声明,点击添加。
- 声明名称:
- 保存配置后,让
myApplication重新获取access token,解码后即可看到Example声明。
方法2:通过应用程序清单配置(批量/自动化场景)
如果需要批量操作或通过脚本配置,直接修改应用清单:
- 在
BackendSystem的应用注册页面,切换到清单标签页。 - 找到或添加
optionalClaims字段,在accessToken数组中加入自定义声明配置:
"optionalClaims": { "accessToken": [ { "name": "Example", "source": null, "essential": false, "additionalProperties": [] } ] }
- 注意:清单配置仅声明要添加的字段,固定值仍需回到令牌配置界面补充,或结合扩展属性实现动态值。
方法3:使用扩展属性添加动态自定义声明(动态值场景)
如果自定义声明值需要从用户/应用属性动态获取:
- 通过PowerShell或Microsoft Graph API为用户/应用注册扩展属性(例如存储用户的业务部门信息)。
- 在
BackendSystem的令牌配置中添加自定义声明时,源选择用户或应用,并指定对应的扩展属性作为值来源。 - 后续用户认证时,Azure AD会自动将扩展属性的值填入
Example声明。
注意事项
- 修改配置后,必须重新获取access token(旧令牌不会自动更新声明)。
- 自定义声明名称需符合JWT规范,避免特殊字符。
- 多租户场景下,需确保配置在目标租户的应用注册中生效。
内容的提问来源于stack exchange,提问作者Reddy Rohit
相关产品推荐
相关产品推荐

