最近被指派要將 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 安裝正確