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

Azure OAuth2访问令牌验证失败:如何获取无nonce的可验证令牌?

解决Azure AD Access Token含Nonce导致Nimbus验证失败的问题

核心原因

Azure AD针对不同场景返回的Access Token结构不同:如果是发给微软自身服务的token(比如调用Graph API),会包含nonce字段,这类token仅微软内部可验证,第三方库(如Nimbus)无法通过签名校验。而发给自定义应用的token则不会包含nonce,可正常验证。

获取可验证Access Token的关键步骤

  • 确保请求自定义应用权限:不要请求Microsoft Graph等微软内置服务的权限,而是申请你自己注册的Azure AD应用(资源应用)的自定义权限或委托权限。
  • 指定正确的资源/受众参数:
    • 若用v1.0端点,resource参数必须填写自定义应用的客户端ID或应用ID URI,而非微软服务ID;
    • 若用v2.0端点,scope参数要包含自定义应用的权限(格式为应用ID URI/权限名),aud会自动对应你的应用ID。
      示例请求参数(v1.0授权码模式):
    client_id=你的客户端ID
    client_secret=你的客户端密钥
    grant_type=authorization_code
    code=授权码
    redirect_uri=回调地址
    resource=你的应用ID URI
    
  • 匹配Nimbus验证配置:验证时,配置Azure AD租户的公开JWKS密钥端点,并将受众(aud)设置为你的自定义应用ID,确保签名校验逻辑对应正确的密钥。

额外排查点

  • 解码token确认aud字段:用jwt.io解码返回的Access Token,检查受众是否为你的应用ID,如果是微软服务ID,说明资源参数设置错误。
  • 核对应用授权配置:在Azure AD门户中,确认客户端应用已获得资源应用的权限授权,且资源应用已正确暴露所需权限。

内容的提问来源于stack exchange,提问作者Turik Mirash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:36:23