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,表示密钥类型是RSAkid: 唯一的密钥标识符,必须和你的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
相关产品推荐
相关产品推荐

