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

Azure应用:JWKS对应私钥获取及证书上传后验证失败咨询

问题解答

问题1:获取用于签名的私钥

Azure不会主动提供私钥,私钥的获取分两种场景:

  • 若通过Azure应用注册页面生成证书:
    在Certificates and secrets > Certificates路径下,点击New certificate > Create self-signed certificate生成证书后,点击证书条目里的Download按钮,选择下载PFX格式文件(不要选CER格式,CER仅包含公钥)。PFX文件包含私钥,下载时需设置密码保护,妥善保存后即可用于签名操作。
  • 若自行生成密钥对(如用OpenSSL工具):
    私钥本身就保存在你的本地环境中,无需从Azure下载,只需将对应公钥(CER或PEM格式)上传至Azure应用即可。

问题2:上传公钥后jwks_uri未更新、验证失败

首先明确:https://login.microsoftonline.com/{tenant-id}/discovery/v2.0/keys这个jwks_uri返回的是Azure AD自身的签名公钥,用于验证Azure AD签发的令牌(如ID Token、Access Token),不会包含你上传到应用的公钥。

针对你的场景(用私钥签名assertion并让Azure AD验证),按以下步骤排查:

  1. 确保上传到Azure应用的证书公钥的kid,与你签名assertion时使用的kid完全一致。可从上传的证书详情或本地密钥文件中提取kid值。
  2. 上传证书后,Azure AD需要1-5分钟同步时间,不要立即测试,等待片刻后再尝试。
  3. 检查上传证书格式:必须是公钥文件(CER或PEM格式),禁止上传私钥文件。
  4. 签名assertion时,确保使用的算法(默认RS256)与Azure应用配置一致,同时assertion中的iss(客户端ID)、aud(Azure AD令牌端点)等字段填写正确。

若仍验证失败,可在Azure AD的App registrations > 你的应用 > Manage > Manifest中查看keyCredentials数组,确认其中已包含你上传的证书条目,且kid值与你使用的一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:21:04