.NET 6控制台应用获取Azure B2C Token时Audience指向自身求助
解决Azure B2C控制台应用Token受众指向自身的问题
问题分析
你遇到的Token受众(aud)指向自身的问题,核心原因是目标API的作用域配置不匹配、控制台应用权限未正确关联目标API,或是MSAL缓存中存在旧的错误Token。以下是具体解决步骤:
解决方案
1. 核对目标API的标识符URI
登录Azure门户,找到目标API的应用注册,查看概述页的标识符URI,确保代码中使用的https://<resourcename>/<apiname>与该URI完全一致——Azure B2C对URI的大小写、斜杠、拼写严格敏感,任何差异都会导致Token受众错误。
2. 确认控制台应用的API权限配置
从你提供的权限截图,需验证两点:
- 已添加的是目标API的Delegated权限,而非当前控制台应用自身的权限
- 若权限标记为“需要管理员同意”,已在API权限页面完成授予管理员同意操作
3. 清理MSAL缓存并验证作用域
- 清除旧缓存:控制台应用的MSAL缓存默认存放在用户目录的
.msal文件夹中,删除该文件夹可强制重新获取Token,避免旧的错误Token干扰。 - 检查作用域参数:确保代码中scopes数组里的目标API作用域完全匹配目标API定义的格式,示例如下:
string[] scopes = new string[] { "openid", "profile", "offline_access", "https://<目标API的标识符URI>/tasks.read", "https://<目标API的标识符URI>/tasks.write" };
4. 解析Token验证结果
获取新Token后,使用JWT解析工具检查内容:
- 确认
aud字段值为目标API的标识符URI - 确认
scp字段包含你请求的tasks.read、tasks.write等作用域
内容的提问来源于stack exchange,提问作者GoWiser
相关产品推荐
相关产品推荐

