ADFS(Active Directory Federation Services,活动目录联合身份验证服务)是微软提供的一种基于标准的身份验证和授权服务,它允许组织在跨域、跨组织甚至跨云环境中实现单点登录(SSO)和联合身份验证。
以下是关于 ADFS 服务器的核心概念、架构、关键组件、配置步骤以及常见问题的详细解析:
什么是 ADFS?
ADFS 允许用户使用其现有的 Windows 域凭据(如用户名和密码)访问位于不同安全边界之外的应用程序或服务,它主要基于以下标准协议:
- SAML 2.0(Security Assertion Markup Language)
- WS-Federation
- OAuth 2.0 / OpenID Connect(较新版本支持)
核心架构与组件
一个典型的 ADFS 部署包含以下关键组件:
(1) ADFS 服务器(ADFS Server)
- 负责处理身份验证请求。
- 验证用户凭据(通常通过后端域控制器)。
- 生成安全令牌(Security Token)。
(2) 令牌签发服务(Token-Issuing Service)
- 位于 ADFS 服务器上,负责签发 SAML 令牌或 JWT 令牌。
(3) 令牌接收服务(Token-Receiving Service / Relying Party Trust)
- 配置信任关系,定义哪些外部应用可以接受 ADFS 颁发的令牌。
(4) 证书服务(Certificate Services)
- ADFS 需要数字证书来加密令牌和签名通信。
- 通常使用内部 CA 颁发的证书,也可以使用自签名证书(仅限测试环境)。
(5) 数据库(WID 或 SQL Server)

- WID(Windows Internal Database):默认嵌入在 ADFS 服务器中,适合小型部署。
- SQL Server:适合大型、高可用性环境,支持集群和负载平衡。
ADFS 工作流程(简化版)
- 用户访问应用程序:用户尝试访问受保护的应用程序(如 Office 365、内部 Web 应用)。
- 重定向到 ADFS:应用程序将用户重定向到 ADFS 登录页面。
- 身份验证:用户在 ADFS 页面输入域凭据,ADFS 向域控制器验证身份。
- 生成令牌:验证成功后,ADFS 创建一个包含用户身份信息的 SAML/JWT 令牌。
- 返回令牌:ADFS 将令牌发送回应用程序。
- 访问资源:应用程序验证令牌有效性后,允许用户访问资源。
如何部署 ADFS 服务器?(Windows Server 2016/2019/2026)
前提条件
- 至少一台 Windows Server 操作系统(2016 及以上)。
- 加入域的计算机账户。
- 域控制器可达。
- 有效的 SSL 证书(用于 Web 访问)。
安装角色:
- 打开“服务器管理器” → “添加角色和功能”。
- 选择“ADFS 服务器”角色。
- 安装所需的功能(如 Web 服务器角色 IIS)。
配置 ADFS:
- 安装完成后,运行“配置 ADFS”向导。
- 选择“创建新的联合服务”或“添加到现有服务”。
- 指定服务账户(建议使用域账户)。
- 配置证书(上传 SSL 证书)。
- 配置数据库(选择 WID 或 SQL Server)。

配置依赖方信任(Relying Party Trust):
- 在 ADFS 管理控制台中,添加需要信任的应用程序。
- 导入元数据文件或手动配置端点 URL。
配置声明规则(Claim Rules):
定义哪些用户属性(如 UPN、邮箱、组)需要包含在令牌中。
ADFS 的高可用性与负载平衡
- 多节点部署:建议至少部署两台 ADFS 服务器以实现高可用。
- 负载平衡器:使用硬件或软件负载平衡器(如 F5、Nginx、IIS ARR)将流量分发到 ADFS 节点。
- 数据库集群:如果使用 SQL Server,建议使用 Always On 可用性组。
- 证书同步:确保所有 ADFS 节点使用相同的证书。
ADFS 的局限性 & 向 Azure AD 迁移
虽然 ADFS 在企业中广泛使用,但微软已明确建议向 Azure AD(现 Microsoft Entra ID) 迁移,原因包括:
- 云原生支持:ADFS 是为本地环境设计的,对云应用支持有限。
- 维护成本高:需要手动维护证书、补丁和基础设施。
- 现代身份验证:Azure AD 支持 MFA、条件访问、零信任架构等现代安全功能。
- 无缝体验:Azure AD 提供更流畅的移动和跨设备体验。

微软建议:新部署应优先考虑 Azure AD,现有 ADFS 环境应制定迁移计划。
常见问题与故障排除
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 登录页面无法加载 | 证书过期或配置错误 | 检查 SSL 证书有效性,确保 IIS 绑定正确。 |
| 令牌生成失败 | 时间不同步 | 确保 ADFS 服务器与域控制器时间同步(NTP)。 |
| 依赖方信任失败 | 元数据 URL 错误或网络问题 | 检查外部应用提供的元数据文件,确保 ADFS 能访问该 URL。 |
| 证书信任链问题 | 中间证书缺失 | 确保证书链完整,包括根 CA 和中间 CA。 |
| ADFS 服务未启动 | 依赖服务未运行 | 检查 IIS、WID/SQL 服务是否正常运行。 |
最佳实践
- 定期更新证书:设置提醒,在证书到期前更换。
- 启用 MFA:在 ADFS 中集成多因素认证(如通过 Azure MFA 或第三方解决方案)。
- 监控与日志:启用 ADFS 日志和事件查看器,定期审查失败登录尝试。
- 最小权限原则:仅向必要的依赖方信任授予访问权限。
- 考虑迁移到云:评估业务需求,逐步将身份验证迁移到 Microsoft Entra ID。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复