如何为AAD OIDC应用注册(含交互/非交互客户端)添加令牌静态声明?
为Azure AD应用添加自定义静态声明"hello": "world"
一、先配置应用支持交互式客户端
- 登录Azure门户,找到目标应用注册
- 进入身份验证页面,点击"添加平台",选择"移动和桌面应用"
- 添加合适的重定向URI(比如
http://localhost或msal{你的客户端ID}://auth),勾选对应平台选项后保存 - 在身份验证页面的高级设置中,将"允许公共客户端流"设置为"是"
二、添加自定义静态声明
方法1:通过应用清单+企业应用声明配置
- 在应用注册页面,切换到清单标签
- 找到
optionalClaims节点(不存在则手动添加),将自定义声明加入ID令牌和/或访问令牌配置,示例如下:
"optionalClaims": { "idToken": [ { "name": "hello", "source": null, "essential": false, "additionalProperties": [] } ], "accessToken": [ { "name": "hello", "source": null, "essential": false, "additionalProperties": [] } ] }
- 保存清单后,进入Azure门户的企业应用,找到对应应用
- 切换到声明标签,点击"添加声明"
- 选择"自定义声明",设置:
- 声明类型:按需选择ID令牌或访问令牌
- 名称:
hello - 值:
world - 勾选"将此声明包含在令牌中",完成后保存
方法2:使用自定义令牌颁发策略(适配复杂场景)
若需要更灵活的声明控制,可创建自定义令牌颁发策略:
- 在Azure AD的身份体验框架中新建策略
- 在策略的
OutputClaims节点添加:
<OutputClaim ClaimTypeReferenceId="hello" DefaultValue="world" />
- 将策略关联到目标应用注册,后续颁发的令牌会自动包含该声明
验证配置
获取令牌后,用JWT解析工具查看,确认令牌中包含"hello": "world"字段即可。
内容的提问来源于stack exchange,提问作者Victorio Berra
相关产品推荐
相关产品推荐

