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

使用AD用户专属证书签名JWT实现ADFS用户认证可行性咨询

可行方案:ADFS基于AD用户证书的JWT签名验证(无需手动上传用户证书)

你的需求完全可以实现,核心是利用ADFS与Active Directory的原生集成,以及证书信任链机制,避免逐个上传用户证书。以下是具体实现思路和步骤:

核心原理

ADFS可以直接从Active Directory中读取用户绑定的公钥证书,无需手动导入到ADFS服务器。当用户用专属私钥签名JWT后,ADFS会根据JWT中的用户标识(如UPN、SID)查询AD获取对应公钥,完成签名验证和身份确认。

具体实现步骤

1. 将用户证书绑定到AD用户对象

  • 单用户操作:打开「AD用户和计算机」→ 右键用户→ 属性→ 「属性编辑器」→ 找到userCertificate→ 添加证书文件。
  • 批量操作:使用PowerShell脚本批量导入,示例命令:
    Set-ADUser -Identity <UserUPN> -Add @{userCertificate = (Get-Content <CertPath> -Encoding Byte)}
    

2. 配置ADFS启用用户证书身份验证

  • 在ADFS管理控制台中,进入「身份验证方法」→ 选择「证书身份验证」(针对用户)→ 启用并配置:
    • 勾选「允许用户使用证书登录」,设置证书验证方式为「Active Directory查询」。
    • 确保ADFS服务账户拥有读取AD用户userCertificate属性的权限(默认权限通常满足需求,若有问题可调整AD权限)。

3. 配置JWT令牌验证规则

  • 在ADFS的目标应用程序组中,添加JWT验证规则:
    • 创建自定义声明规则,从JWT中提取用户标识(如upn或sub),查询AD获取该用户的userCertificate属性。
    • 利用ADFS内置的「验证证书签名」规则,将提取的用户证书与JWT签名匹配验证。

更高效的替代方案(统一CA场景)

如果所有用户证书都由企业内部CA签发,无需绑定到AD用户属性:

  • 将CA的根证书和中间证书导入ADFS的「受信任的根证书颁发机构」存储。
  • 配置ADFS信任该CA签发的所有用户证书,ADFS会自动验证证书签名链,同时通过证书中的用户标识(如UPN字段)关联AD用户。

关于JWKS URL的说明

不建议为大量用户证书维护JWKS端点,原因:

  • 用户证书会频繁过期、更换,JWKS端点维护成本极高。
  • 利用AD或CA信任链的方式,ADFS会自动获取最新的用户证书或信任关系,无需手动更新JWKS。

参考方向

  • 查阅ADFS官方文档中「用户证书身份验证」章节,了解AD与ADFS的证书集成细节。
  • 参考ADFS自定义声明规则示例,学习如何通过用户标识关联AD证书并验证JWT签名。

内容的提问来源于stack exchange,提问作者Pea Kay See Es

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:20:49