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

Azure AD客户端证书认证:如何在JWT中加入证书主题声明

让Azure AD令牌包含证书主题声明的解决方案

我明白你已经顺利跑通了证书凭据的守护程序项目,现在希望Azure AD返回的访问令牌里能带上证书主题(比如CN=TodoListDaemonWithCert这类)的声明,后续更换不同主题的证书时也能自动对应上。下面是具体的实现方案:

方法一:使用Azure AD可选声明(推荐)

Azure AD提供了现成的client_cert可选声明,添加后会在访问令牌中包含客户端证书的完整信息,其中就包含证书主题:

  1. 登录Azure门户,找到你的守护程序应用注册
  2. 进入左侧菜单的「令牌配置」选项卡
  3. 点击「添加可选声明」按钮
  4. 在弹出窗口中:
    • 选择令牌类型为「访问令牌」(因为你要用来访问Web API)
    • 勾选client_cert声明,点击「添加」
  5. 回到「令牌配置」页面,确认声明已添加并保存配置

之后你的守护程序用证书获取令牌时,令牌的Payload里会多出一个client_cert对象,结构大概是这样:

"client_cert": {
  "subject": "CN=TodoListDaemonWithCert",
  "thumbprint": "XXXXX...",
  "issuer": "CN=TodoListDaemonWithCert"
}

你可以直接从subject字段提取证书主题,后续更换不同主题的证书时,只要证书已上传到应用注册的「证书和密码」里,这个字段会自动更新为对应证书的主题。

方法二:自定义独立声明(按需选择)

如果希望令牌里有单独的cert_subject字段(而不是嵌套在client_cert里),可以通过Azure AD目录扩展实现,但步骤相对复杂:

  1. 使用Microsoft Graph API在Azure AD中创建一个目录扩展属性(比如extension_certSubject)
  2. 在守护程序应用注册中启用这个扩展属性
  3. 配置Azure AD在颁发令牌时,将证书主题自动填充到这个扩展声明中

不过这种方式需要额外的API操作和配置,如果你只是需要获取证书主题,方法一完全能满足需求,优先推荐。

验证配置效果

获取新的令牌后,你可以用JWT解码工具查看Payload部分,确认client_cert声明是否存在,以及subject字段是否和你的证书主题一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:59:05