API Manager OAuth服务器生成错误audience声明问题排查
问题:Azure API Manager OAuth Token Audience异常及后续401排查
初始问题及解决
配置背景
已在Azure API Manager中完成backend-app、client-app和OAuth服务器的配置,所有组件均使用v2端点:
- OAuth服务器的
default scope设置为api://<backend-app client ID> validate-jwt策略的audience标签值与上述scope一致,未配置required-claims- 每次修改配置后,都会在开发者门户测试控制台的try-it模态框中重新授权
初始异常
无论如何调整参数,测试控制台获取到的token的aud声明始终为固定值:
"aud": "00000003-0000-0000-c000-000000000000"
解决步骤
通过排查发现两个关键操作缺失:
- 发布开发者门户:APIM的配置变更(包括OAuth相关设置)需要发布开发者门户后,才会在测试控制台生效
- 配置并授权API范围:面向守护程序应用(使用应用角色)的API仍需配置范围——在backend-app的应用注册中创建测试范围,完成后授予管理员同意
完成以上操作后,token的aud声明恢复为预期的api://<backend-app client ID>。
后续401状态码问题排查方向
当前token的aud已正确,但仍返回401,可从以下方向排查:
- 检查
validate-jwt策略的issuer配置是否匹配v2端点格式:https://login.microsoftonline.com/{你的租户ID}/v2.0 - 确认token的
roles声明是否包含backend-app中定义的应用角色,且该角色已通过Azure AD授予给client-app - 验证OAuth服务器的授权请求是否正确携带了目标范围,APIM配置的
default scope是否与请求中的scope一致 - 使用JWT解码工具检查token的有效期、签名算法是否与
validate-jwt策略的配置匹配
内容的提问来源于stack exchange,提问作者Monsieur le Crucudil
相关产品推荐
相关产品推荐

