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

Azure AD B2C自定义IDP创建报错:JWKS端点JSON格式咨询

Azure AD B2C自定义IDP的JWKS端点预期格式说明

我之前帮不少开发者排查过Azure AD B2C自定义IDP的JWKS格式问题——虽然你已经通过了JSON语法校验,但AD B2C对JWKS的结构和字段有明确的特定要求,哪怕JSON语法完全正确,不符合这些规范也会触发报错。下面是你需要重点核对的几个关键点:

核心结构要求

  • 整个JWKS响应必须是一个JSON对象,顶级字段必须包含keys,且keys是一个包含至少一个密钥条目的数组。

单个密钥条目的必填字段

对于用于JWT签名验证的RSA密钥(AD B2C最常用的场景),每个密钥条目必须包含以下字段:

  • kty: 固定为RSA,表示密钥类型是RSA
  • kid: 唯一的密钥标识符,必须和你的IDP签发的JWT令牌头部中的kid字段完全匹配(大小写敏感,这是最容易踩坑的点之一)
  • n: RSA公钥的模数,采用base64url编码(注意不是标准base64,要替换+为-、/为_,去掉末尾的=填充)
  • e: RSA公钥的指数,同样是base64url编码,通常值为AQAB

可选但建议添加的字段

这些字段能帮助AD B2C更准确地识别密钥用途,减少自动推断错误:

  • use: 建议设为sig,明确标识该密钥用于签名验证
  • alg: 指定该密钥对应的签名算法,比如RS256,要和你在AD B2C自定义IDP配置中选择的签名算法保持一致
  • x5c: 包含证书链的base64编码数组,AD B2C可以直接通过这个字段验证证书的有效性,比单独依赖n和e更可靠

符合要求的JWKS示例

{
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "my-custom-idp-key-2024",
      "n": "tZ9Xa...省略过长内容...QwE",
      "e": "AQAB",
      "alg": "RS256",
      "x5c": [
        "MIICdzCCAX+gAwIBAgIU...省略证书内容...=="
      ]
    }
  ]
}

常见错误排查点

  • 检查n和e的编码格式:必须是base64url,不是标准base64,也不能是原始二进制或hex编码
  • 确认kid和JWT令牌头中的kid完全一致:比如令牌头里是kid: "key-123",JWKS里就不能写成kid: "Key-123"
  • 如果配置了多密钥轮换,确保keys数组里包含所有当前有效的密钥,AD B2C会根据JWT的kid自动匹配对应的密钥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:18:12