使用服务主体OAuth token认证内部API报the audience is invalid错误
确定内部API所需resource参数的可行方法
- 抓正常运行的SDK认证请求包
用Fiddler、Charles等抓包工具截取可正常认证的SDK客户端向身份服务发起的令牌请求,直接提取请求中携带的resource参数值,该值可直接复用,是准确率最高的方案。 - 查阅身份服务中的API注册配置
内部API在对应身份平台(如Azure AD、内部统一身份服务)注册时,都会生成唯一的应用ID URI/资源标识符,该值就是你需要的resource值。你可以找负责身份配置的运维/开发人员索要,也可以在有权限的前提下直接登录身份管理后台,搜索该内部API的注册条目查看对应配置。 - 解析有效访问令牌的aud声明
找其他开发者索要一个可正常调用该API的access token,在本地用JWT解析工具解码,令牌中的aud(受众)字段值就是resource参数的取值,注意不要将内部敏感令牌上传到公网解析工具,避免泄露风险。 - 查看API服务端的验证配置
对接API的开发人员,查看服务端身份验证中间件的配置,比如ASP.NET服务的JWT验证配置里的Audience属性值,就是接口要求的resource值。
补充常见兼容场景:如果你的身份服务用的是OAuth 2.0 v2端点,部分场景下resource参数会合并到scope参数中,格式为
{resource值}/.default,如果之前你填的scope没有带资源前缀,可以按这个格式调整测试。
内容的提问来源于stack exchange,提问作者ernest
相关产品推荐
相关产品推荐

