Azure access_token签名验证:公钥处理、密钥需求及基础算法咨询
验证Azure AD Access Token的常见问题解答
1. 公钥预处理与验证工具说明
你通过https://login.microsoftonline.com/{{tenantid}}/discovery/keys?appid={{app-id}}获取的x5c字段是正确的公钥来源,但直接使用原始base64字符串会导致验证失败,必须转换成PEM格式:
- 提取x5c数组的第一个元素(这是直接用于签名验证的证书)
- 将长串base64按每64字符换行分割
- 在首尾分别添加
-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----
转换后的示例格式:
-----BEGIN CERTIFICATE----- MIIC5zCCAc+gAwIBAgIQabcdef...(省略中间内容) ...xyz123 -----END CERTIFICATE-----
另外注意:jwt-decode仅负责解析令牌的明文内容,不执行签名验证。要完成完整的令牌合法性校验,需使用支持JWT验证的库(如Node.js的jsonwebtoken、Python的PyJWT),调用其verify类方法并传入处理好的公钥。
2. 签名验证的密钥要求
验证Access Token的签名仅需公钥,私钥由Azure AD独家持有,用于生成令牌签名,验证方无需获取或持有私钥。
3. 基础签名算法
Azure AD默认采用**RS256(RSA-SHA256)**作为Access Token的签名算法,属于非对称加密体系:
- Azure AD使用私钥对令牌进行签名
- 验证方通过对应的公钥验证签名的真实性和完整性
内容的提问来源于stack exchange,提问作者Naved Akhtar
相关产品推荐
相关产品推荐

