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

Azure应用注册中Client Assertion签名验证失败求助

排查步骤
  • 验证证书指纹(x5t)的编码格式
    你当前使用的是普通Base64编码的指纹,但Azure要求x5t必须是证书SHA-1指纹的Base64Url编码(替换+为-,/为_,去掉末尾的=)。
    操作步骤:

    1. 获取证书的十六进制SHA-1指纹(去掉所有冒号)
    2. 将十六进制字符串转换为字节数组
    3. 对字节数组进行Base64Url编码,得到正确的x5t值
  • 检查Client Assertion的Payload必填字段
    确保Payload包含以下必填字段,且值完全符合要求:

    {
      "iss": "你的应用注册Client ID",
      "sub": "你的应用注册Client ID",
      "aud": "https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/token",
      "exp": 1718xxxxxx, // Unix时间戳,过期时间不能超过当前时间+1小时
      "nbf": 1718xxxxxx  // Unix时间戳,生效时间略早于当前时间即可
    }
    

    注意aud必须和你请求令牌时使用的端点完全一致,不能有误。

  • 确认Azure应用注册中的证书状态
    登录Azure门户,进入应用注册的「证书和密码」页面:

    • 检查上传的.cer证书是否处于启用状态,未过期
    • 核对证书的十六进制指纹(Azure显示的指纹不带冒号)和你用来生成x5t的指纹完全匹配
    • 确保你本地持有的私钥和该公钥证书是配对的,私钥未损坏
  • 检查签名算法和私钥格式

    • 确认jwt.io中选择的签名算法是RS256,和JWT头中的alg一致
    • 私钥必须是PKCS#8格式(PEM文件开头为-----BEGIN PRIVATE KEY-----),如果是PKCS#1格式(开头为-----BEGIN RSA PRIVATE KEY-----),需要转换为PKCS#8后再使用
  • 核对令牌请求参数
    请求访问令牌时,必须包含以下参数:

    • grant_type: client_credentials
    • client_assertion_type: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
    • client_assertion: 你生成的完整JWT字符串
    • scope: 对应的API权限范围(如https://graph.microsoft.com/.default)
      确保所有参数无拼写错误,租户ID、Client ID与应用注册信息一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:06:32