一、什么是ADFS?

Active Directory FederationService(ADFS)是微软基于WindowsServer平台的身份认证服务,可以为用户提供跨组织边界的系统和应用程序单一登录(SSO)授权服务, 从而实现联合身份和资源访问管理。

简单来说,ADFS联合认证服务,可以快速打通公司本地AD和第三方系统,ADFS负责身份认证过程,验证通过后通知第三方系统,再由第三方系统提供相对应的服务,实现不同组织间的资源访问。

工作过程如下图所示:

 Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS

举个简单的例子,比如Zoom视频会议平台,它支持SMAL2.0协议,所以我们可以将其接入ADFS,这样公司用户在登录Zoom的时候,会自动跳转到公司的ADFS门户认证页面,使用AD账号完成身份认证后,再跳转回到Zoom网站,Zoom网站根据认证结果,授予相应的资源访问权限。

二、ADFS的组成

ADFS总共由4个角色组成,以下为各角色的功能介绍,实际环境中会按需求部署角色。

  •  ActiveDirectoryADFS 将要使用的身份信息存储在活动目录上,即本地AD域服务。
  • ADFS服务器:它包含管理业务合作伙伴之间的联合信任所需的工具。它处理来自外部用户的身份验证请求,并运行一个安全令牌服务,该服务根据对 AD 凭据的验证并为声明发出令牌。
  • ADFS代理:代理部署在组织的外联网上,外部客户端在请求安全令牌时将这些请求转发给后端ADFS服务器。ADFS服务器不会直接暴露在 Internet 上以防止安全风险。
  • ADFS Web服务器:它托管 ADFS Web Proxy,用于管理发送给它的安全令牌和身份验证 Cookie 以进行身份验证。

三、规划ADFS架构

ADFS目前有三种可选的架构(拓扑图来自微软官方网站):

  1. 基于WIDADFS服务器场

WID:windows Internal  database,即Windows内置数据库。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_02

  1. 基于WID和代理的ADFS服务器场

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_03

  1. 基于SQL ServerADFS服务器场

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_04

具体选择哪种架构,要视实际情况而定,在考虑成本的情况下,我们会推荐选择第1或者第2种架构,使用WID数据库来部署,WID可以支持最多100个信赖方,且WID场支持不多于30台的ADFS服务器,当然,如果实际环境中超过100个信赖方,那可以考虑使用第3种架构。

在实际项目中,我们有采用过第3种架构,后端两台SQLServer AlwaysOn可用性组高可用,两台ADFS服务器场,前端两台代理服务器代理ADFS请求,这种架构相对复杂,并且成本会提高,比如搭建AlwaysOn可用性组SQL Server的授权必须是企业版,这成本就上来了,不建议使用。

回到之前混合部署的测试项目中来,我们将采用第1种架构,第2种架构前端多了一台代理服务器,在安全性要求高的组织中可能会需要,会简单介绍一下。

四、部署ADFS联合服务器

我们会用fss01.contoso.com这台服务器来安装部署ADFS服务,这台服务器是不是有些眼熟?对,就是之前我们安装AAD Connect的服务器,不是必须,是节约资源,实际生产环境中,可以单独用一台服务器来部署。

4.1 准备一张用于ADFS的公网SSL证书

主题名称和主题可选名称必须包含联合身份验证服务名称,例如 fs.contoso.com。

使用者可选名称必须包含值 enterpriseregistration, 后跟组织的"用户主体名称 ( UPN"后缀, ) 例如 enterpriseregistration.corp.contoso.com。

我们环境中应添加两条记录:

fs.mooing.cc
enterpriseregistration.mooing.cc

enterpriseregistration.mooing.cc主要用来设备注册,我们使用的免费SSL证书不支持多域名,所以测试中,我们只添加fs.mooing.cc记录用作演示。

4.2 安装 AD FS 角色服务

安装ADFS角色服务,可以通过“添加角色和功能向导”进行,按向导完成即可,没有特别的选项设定,这里我使用Powershell安装,少截点图:

Install-windowsfeature adfs-federation–IncludeManagementTools

 Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_05

4.3 配置联合服务器

安装完成ADFS服务器角色之后,我们来配置一下ADFS服务,让它成为联合服务器。

  1. 在“Server Manager”工具中,打开配置界面。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_06

  1. 因为我们是第一台ADFS服务器,所以选择图中所示选项。 

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_07

  1. 提供配置凭据,需要是Domain Admin权限。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_08

  1. 导入ADFS所需的公网证书,并为ADFS添加显示名。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_09

  1. 指定一个服务账户,这里使用普通域账户和服务账户都可以,但是使用服务账户没有定期更改密码的问题,它可以自动协商更新密码。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_10

  1. 如果需要创建服务账户,需使用以下命令在DC上启用KDS Key,然后退回上一步,再下一步创建服务帐号即可。
Add-KdsRootKey –EffectiveTime (Get-Date).AddHours(-10)

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_11

回到配置向导,添加服务帐号。

Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_12

  1. 指定数据库类型,我们选择使用WID数据库。

Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_13

  1. 确认配置并完成。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_14

 Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_15

4.4 为ADFS服务添加DNS记录

接下来,我们需在内网和公网DNS上添加两条记录:

Fs.mooing.cc  #A记录  内网DNS指向内网IP,公网DNS指向公网IP
Enterpriseregistration.mooing.cc #CNAME指向fs.mooing.cc

4.5 验证ADFS登录

1.查看https://fs.mooing.cc/adfs/fs/federationserverservice.asmx网页是否正常显示XML

 Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_16

2.事件查看器中,查看EventID100的应用程序日志。

 Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_17

五、将其他系统接入ADFS身份认证

5.1 将Office365接入ADFS身份认证

在混合部署环境中配置ADFS联合,需要满足以下条件:

  • 部署ADFS需要Windows Server 2012 R2 或更高版本,且启用远程管理。
  • 用于 Web 应用程序代理服务器的 Windows Server 2012 R2或更高版本,启用远程管理。
  • ADFS身份验证服务名称(例如 fs.mooing.cc)的 TLS/SSL 证书。

以上条件满足的情况下,我们可以使用AAD Connect来配置联合。

  1. 打开AAD Connect工具,选择更改用户登录方式

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_18

  1. 将用户登录方式更改为ADFS联合身份认证。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_19

  1. 使用我们创建好的ADFS服务器场。

Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_20

  1. 选择我们需要配置的AAD域。

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_21

  1. 完成ADFS配置。

Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_22Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_23

  1. 最后一步可以使用检查工具检查ADFS配置有效性。

Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_24

完成配置后,我们发现AD FS管理工具中,已经自动添加了与Office365的信任关系,如下图所示:

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_25

  1. 使用ADFS认证登陆Office365网站 

我们现在尝试登录Office365邮箱,看是否已经切换到ADFS认证

登录https://outlook.office.com

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS实战教程_26

输入邮箱地址下一步之后,会自动跳转到ADFS认证页面,如下图:

Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_27

验证成功后,成功跳转到Office365邮箱。

 Office365混合部署进阶系列教程四:ADFS联合身份认证_ADFS_28

5.2 将其他第三方系统接入ADFS

ADFS支持SMAL协议接入,如果第三方系统支持SAML2.0协议,那我们可以很轻松的将第三方系统接入我们的ADFS,让ADFS来负责身份认证,认证通过后,再由第三方系统提供相应的资源访问,目前我知道的像Zoom会议系统、销售易、UMU培训系统等都支持以SAML协议接入ADFS进行身份认证。

5.1 名词解释

在接入第三方系统之前,我们需要先了解下接入时常接触到的名词:

  • ServiceProvider(SP):服务提供方,即为第三方系统提供商。
  • Identity Provider (IDP):身份标识提供方,即ADFS系统。
  • Metadata元数据文件:此文件SP和IDP方各有一份,里面包括了所有的配置信息,包括证书、ADFS配置信息等。
  • 声明规则:第三方系统应该给出程序需要的声明,如Email-Address,Given-Name,Surname等。认证成功后,ADFS负责将这些信息发送给第三方。
5.2 对接方式
  • 互导Metadata文件。这是推荐方式,双方交换Metadata元数据文件是对接ADFS最便捷的方式。通常情况下ADFS Metadata文件下载地址(将域名更换成实际环境中的ADFS地址):https://fs.mooing.cc/federationmetadata/2007-06/federationmetadata.xml
  • 手工对接。IDP方提供Metadata数据给SP,SP从Metadata元数据文件中提取自己需要的信息。SP提供需要的声明规则及映射规则。

我们可以在ADFS管理控制台中查看ADFS中关于Office365的对接规则,用以学习,同时也可以参考一下如何将Zoom视频会议接入ADFS​。

 下一章,我们来个性化定制一下ADFS的登录界面,提升用户登录体验,先提前看下最终ADFS的自定义登录页效果,图片上车车是不是很眼熟? :)

Office365混合部署进阶系列教程四:ADFS联合身份认证_Office365混合部署_29