You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OBO流获取令牌时遭遇AADSTS50013签名验证失败错误

解决OBO令牌流转中的AADSTS50013错误及受众(aud)问题

核心错误分析(AADSTS50013)

错误提示签名验证失败,原因是Azure AD找到对应密钥但无法完成签名校验,重点排查以下几点:

1. 确认API应用注册的密钥/证书有效性

  • 登录Azure Portal,进入API应用注册的证书和密码页面,对比错误信息中提到的密钥有效期(Start=11/27/2024 09:04:39, End=11/27/2029 09:04:39),找到匹配的密钥/证书。
  • 检查该密钥的指纹(Thumbprint)是否与错误中的Thumbprint of key used by client: 'XXXX'完全一致,若不匹配则说明使用了错误的凭据,需更新客户端所用密钥。
  • 若使用证书,确保证书包含完整私钥,且未过期或被篡改。

2. 验证令牌签名算法配置

进入API应用注册的令牌配置页面,确认access token签名算法设置为RS256(默认应为该值,需避免被修改为HS256)。算法不匹配会直接导致签名验证失败。


受众(aud)字段异常问题

用户access token的aud为GUID而非api://ID_OF_THE_API_ENDPOINT,原因是SPA请求token时使用了错误的scope格式:

  • 需确保SPA请求access token时,scope参数为完整的应用ID URI格式:api://<API_APP_ID>/access_as_user,而非直接使用API应用的GUID。
  • 重新获取用户access token后,检查aud字段是否变为api://<API_APP_ID>,这是OBO流程中可被验证的有效受众。

OBO令牌请求参数修正

你的Postman请求存在两个关键错误:

1. 请求方法错误

获取OBO令牌必须使用POST方法,而非GET。GET方法无法正确传递请求体参数,会导致Azure AD解析失败。

2. 客户端身份参数错误

OBO流程中,发起请求的客户端应为你的API应用注册(而非SPA),因此:

  • client_id需填写API应用的ID,而非SPA的ID;
  • client_secret需填写API应用注册中生成的客户端密码,而非SPA的凭据(SPA作为公共客户端通常无client_secret)。

修正后的请求参数(POST请求体,x-www-form-urlencoded格式)

grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
scope: api://<API_APP_ID>/access_as_user
client_secret: <API_APP_CLIENT_SECRET>
assertion: <VALID_USER_ACCESS_TOKEN_WITH_CORRECT_AUD>
requested_token_use: on_behalf_of
client_id: <API_APP_ID>

内容的提问来源于stack exchange,提问作者Jeppe Christensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:42:43