最近被指派要将 ADFS 彻底摸透, 从最基本的 ADFS 安装, 到 ADFS 管理, OAuth 整合, ADFS 迁移与升级, ADFS 维运以及 Troubleshooting 等主题都要清楚, 因此我準备把学习的笔记记录下来, 作为参考文件.
第一的部分从建立单机版的 ADFS 步骤开始.
1. 环境準备
(1) 本範例以 Windows Server 2016 为安装 ADFS 的作业系统, 因此需要安装好 Windows Server 2016, 并且加入网域中
(2) 凭证: 可以使用公开凭证作为 ADFS 凭证使用, 也可以使用 CA Server 发行凭证 (本篇笔记以 CA Server 发行凭证为範例), 如果要使用 CA Server, 请确认企业内部有 Enterprise 凭证主机
2. 为 ADFS 準备凭证
ADFS 可以使用公开凭证(需要花钱购买), 也可以使用 CA Server 发行凭证, 以下步骤为 CA Server 与 ADFS Server 请求凭证的步骤
2.1 建立 ADFS Certificate Template
(1) 登入 CA Server, 从 Tool 中开启 Certification Authority 管理中心
(2) 在 CA 管理中心 Console 中选取 Certificate Templates 按右键, 选取 Manage
(3) 在凭证 Templates 中选取 Web Server 按右键, 选取 Duplicate Template
(4) 开启属性视窗, 选取 General, 输入 ADFS Template 作为 Template 名称
(5) 选取 Security 页籤, 新增 帐户选项
(6) 输入 Domain Computers 群组
(7) 选取 Enroll 权限
(8) 选取 Request Handling 页籤, 勾选 Allow private key to be exported 选项允许汇出 Private key
(9) 完成后 ADFS Template 出现在列表中
(10) 回到 CA 管理 Console, 选取 Certificate Templates 按右键, 选取 New, 并选取 Certificate Template to Issue
(11) 选取 ADFS Template 进行启用
(12) ADFS Tempate 便完成在 CA Server 新增的作业
2.2 申请 ADFS 凭证
(1) 登入 ADFS 主机, 开启命令提示视窗, 输入命令 certlm, 开启本机电脑凭证管理员
(2) 选取 Personal > Certificates 按右键, 选取 All Tasks, 再选取 Request New Certificate...
(3) 根据设定精灵, 进行设置
(4) 选取 Active Directory Enrollment Policy
(5) 选取 ADFS Template, 并点选 More information is required to enroll for this certificate. Click here to configure settings.
如果没有看到 ADFS Template 选项, 请先执行 GPUpdate /force, 或将 CA 跟凭证汇入 ADFS 主机 Trusted Root Authority
(6) 在凭证属性中, Subject name 栏位, 请选择 Common name Type, Alternative name 栏位, 请选择 DNS Type, 并且加入以下的设定值:
a. CN: adfs.yourdomain.com
b. DNS: adfsservername.yourdomain.com, adfs.yourdomain.com, enterpriseregistration.yourdomain.com, certauth.adfs.yourdomain.com
(7) 设定 ADFS certificate 为 Friendly name
(8) 选择 ADFS Template 并进行 Enroll
(9) Enroll 成功便完成凭证请求与安装
(10) ADFS 凭证会出现在 Personal > Certificates 列表中
2.3 将 KDS Root Key 加入至 Group Managed Service Account
(1) 登入 AD Server, 开启 PowerShell, 使用以下指令新增 KDS Root Key 到 group managed service account
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
(2) 使用以下指令建立 group managed service account
New-ADServiceAccount FsGmsa -DNSHostName adfs.asabuludemo.com -ServicePrincipalNames http/adfs.asabuludemo.com
(3) 为 ADFS 设定 SPN, 指令如下:
setspn -s host/adfs.asabuludemo.com asabuludemo\FsGmsa$
2.4 在 DNS Server 加入 ADFS A record
在 DNS 主机上加入一笔 A Record 如下:
2.5 安装 ADFS
(1) 开启 Windows Add Roles and Features 精灵
(2) 新增 Active Directory Federation Service
(3) 依照精灵安装完成后, 选取 Configure the federation service on this server 进行 ADFS 设定
2.6 设定 ADFS
(1) 开启 ADFS 设定精灵, 选取 Create the first feder ation seerver in a federation server farm
(2) 输入 AD domain administrator 帐户
(3) 选取 ADFS 凭证(adfs.yourdomain.com), 服务名称 adfs.yourdomain.com, 以及 Federation 服务名称 (通常是组织名称)
(4) 在 服务帐户 设定, 选取 Use an existing domain user account or group Manageed Service Account, 选取前面建立的 group managed service account.
(5) 指定 SQL Server
(6) 依照精灵步骤完成安装
(7) 安装完成后需要 重新启动 ADFS 主机
2.7 启用登入页面
重启 ADFS 主机后, 开启 PowerShell, 执行以下的指令, 启用登入页面
Set-AdfsProperties -EnableIdPInitiatedSignonPage $true
2.8 测试 ADFS 登入
(1) 开启 Browser, 输入以下的网址, 测试登入, 点选 Sign in Button
https://adfs.yourdomain.com/adfs/ls/idpinitiatedsignon.htm
(2) 输入帐号进行登入
(3) 登入完成后, 会看到 You are signed in. 讯息, 表示 ADFS 安装正确