AD FS 單一登入設定

適用於:Windows Server (所有支援的版本)

單一登入 (SSO) 可讓使用者在完成一次驗證後存取多個資源,而不會被提示輸入更多認證。 本文說明 AD FS 的預設 SSO 行為,以及可讓您自訂此行為的組態設定。

支援的單一登入類型

AD FS 支援數種類型的單一登入體驗:

  • 工作階段 SSO

    工作階段 SSO 可在使用者於特定工作階段期間切換應用程式時免除額外的提示。 特定工作階段結束時,系統會再次提示使用者輸入其認證。 工作階段 SSO Cookie 是針對已驗證的使用者而撰寫的。

    如果使用者的裝置未註冊,依預設 AD FS 會設定工作階段 SSO Cookie。 如果瀏覽器工作階段在結束後重新啟動,此工作階段 Cookie 將會刪除並就此失效。

  • 持續性 SSO

    在持續性 SSO Cookie 有效期間,持續性 SSO 可在使用者切換應用程式時免除額外的提示。 持續性 SSO Cookie 是針對已驗證的使用者而撰寫的。 持續性 SSO 與工作階段 SSO 的差異在於,持續性 SSO 可以跨不同的工作階段持續維護。

    如果裝置已註冊,AD FS 將會設定持續性 SSO Cookie。 如果使用者選取 [讓我保持登入狀態] 選項,AD FS 也會設定持續性 SSO Cookie。 如果持續性 SSO Cookie 不再有效,則會遭到拒絕並刪除。

  • 應用程式特定的 SSO

    在 OAuth 案例中,會使用重新整理權杖來維護使用者在特定應用程式範圍內的 SSO 狀態。

    AD FS 會根據已註冊裝置的持續性 SSO Cookie 存留期,設定重新整理權杖的到期時間。 根據預設,Windows Server 2012 R2 上 AD FS 的 Cookie 存留期為七天。 如果在 14 天的期間內使用裝置來存取 AD FS 資源,則 Windows Server 2016 上 AD FS 的預設 Cookie 存留期最多為 90 天。

如果裝置未註冊,但使用者選取了 [讓我保持登入狀態] 選項,則重新整理權杖的到期時間會等於「讓我保持登入狀態」的持續性 SSO Cookie 存留期。 持續性 SSO Cookie 存留期預設為一天,最大值為七天。 否則,重新整理權杖存留期會等於工作階段 SSO Cookie 存留期 (預設為 8 小時)。

除非持續性 SSO 停用,否則已註冊裝置上的使用者一律可進行持續性 SSO。 對於未註冊的裝置,可藉由啟用「讓我保持登入狀態」(KMSI) 功能來實現持續性 SSO。

對於 Windows Server 2012 R2,若要為「讓我保持登入狀態」案例啟用 PSSO,您必須安裝此 Hotfix,這也是 Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的 2014 年 8 月更新彙總套件的一部分。

Task PowerShell 描述
啟用/停用持續性 SSO Set-AdfsProperties –EnablePersistentSso <Boolean> 依預設會啟用持續性 SSO。 如果停用,則不會建立 PSSO Cookie。
啟用/停用「讓我保持登入狀態」 Set-AdfsProperties –EnableKmsi <Boolean> 依預設會停用「讓我保持登入狀態」功能。 如果啟用,使用者將會在 AD FS 登入頁面上會看到 [讓我保持登入狀態] 選項

AD FS 2016 - 單一登入和已驗證的裝置

當要求者從已註冊的裝置進行驗證時,AD FS 2016 會變更 PSSO 而增加到最多 90 天,但必須在 14 天 (裝置使用期間) 內進行驗證。 第一次提供認證後,已註冊裝置的使用者依預設會取得最多為期 90 天的單一登入,前提是他們至少每 14 天使用裝置存取 AD FS 資源一次。 15 天後,系統會再次提示使用者輸入認證。

依預設會啟用持續性 SSO。 如果停用,則不會建立 PSSO Cookie。|

Set-AdfsProperties –EnablePersistentSso <Boolean\>

裝置使用期間 (預設為 14 天) 由 AD FS 屬性 DeviceUsageWindowInDays 所控管。

Set-AdfsProperties -DeviceUsageWindowInDays

單一登入期間上限 (預設為 90 天) 由 AD FS 屬性 PersistentSsoLifetimeMins 所控管。

Set-AdfsProperties -PersistentSsoLifetimeMins

未驗證裝置的讓我保持登入狀態

對於未註冊的裝置,單一登入期間取決於 [讓我保持登入狀態 (KMSI)] 功能設定。 KMSI 預設為停用,可藉由將 AD FS 屬性 KmsiEnabled 設定為 True 來啟用。

Set-AdfsProperties -EnableKmsi $true

KMSI 停用時,預設的單一登入期間為 8 小時。 單一登入期間可使用 SsoLifetime 屬性來設定。 此屬性是以分鐘測量,因此預設值為 480。

Set-AdfsProperties –SsoLifetime <Int32\>

KMSI 啟用時,預設的單一登入期間為 24 小時。 已啟用 KMSI 的單一登入期間可使用 KmsiLifetimeMins 屬性來設定。 此屬性是以分鐘測量,因此預設值為 1440。

Set-AdfsProperties –KmsiLifetimeMins <Int32\>

多重要素驗證 (MFA) 行為

AD FS 提供相對較長的單一登入期間。 請務必注意,若先前的登入是以主要認證 (非 MFA) 為基礎,但目前的登入需要 MFA,AD FS 就會提示進行更多驗證 (多重要素驗證)。 無論 SSO 設定為何,都會有此行為。 AD FS 在收到驗證要求時,會先判斷是否有 SSO 內容 (例如 Cookie),然後再判斷是否需要 MFA。 例如,若驗證要求來自外部,就需要 MFA。 在這種情況下,AD FS 會評估 SSO 內容是否包含 MFA。 若不包含,則會提示進行 MFA。

PSSO 撤銷

為確保安全性,在符合下列條件時,AD FS 會拒絕先前發出的任何持續性 SSO Cookie:

  • 使用者變更了密碼

  • 在 AD FS 中停用持續性 SSO 設定

  • 裝置在遺失或遭竊的情況下被系統管理員停用

  • AD FS 收到為已註冊的使用者發出的持續性 SSO Cookie,但使用者或裝置已未註冊

  • AD FS 收到已註冊使用者的持續性 SSO Cookie,但使用者已重新註冊

  • AD FS 收到因「讓我保持登入狀態」而發出的持續性 SSO Cookie,但 AD FS 中已停用「讓我保持登入狀態」設定

  • AD FS 收到為已註冊的使用者發出的持續性 SSO Cookie,但裝置憑證遺失或在驗證期間有所變更

  • AD FS 管理員已設定持續性 SSO 的截止時間。 截止時間設定後,AD FS 將會拒絕任何在此時間之前發出的持續性 SSO Cookie

若要拒絕持續性 SSO Cookie,使用者必須提供其認證以再次向 AD FS 進行驗證。

若要設定截止時間,請執行下列 PowerShell Cmdlet:

Set-AdfsProperties -PersistentSsoCutoffTime <DateTime>

為 Office 365 使用者啟用 PSSO 以存取 SharePoint Online

PSSO 啟用並設定後,AD FS 會在使用者驗證之後立即建立持續性 Cookie。 只要 Cookie 仍有效,PSSO 就可讓使用者無須在後續的工作階段中重新驗證。

Office 365 和 SharePoint Online 的使用者也可以避免額外的驗證提示。 在 AD FS 配置以下兩條要求規則,藉此觸發 Microsoft Entra ID 和 SharePoint Online 的持久性。 若要為 Office 365 使用者啟用 PSSO 以存取 SharePoint Online,請安裝此 Hotfix。 這是 Windows RT 8.1、Windows 8.1 和 Windows Server 2012 R2 的 2014 年 8 月更新彙總套件的一部分。

通過 InsideCorporateNetwork 宣告的發行轉換規則

@RuleTemplate = "PassThroughClaims"
@RuleName = "Pass through claim - InsideCorporateNetwork"
c:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork"]
=> issue(claim = c);
A custom Issuance Transform rule to pass through the persistent SSO claim
@RuleName = "Pass Through Claim - Psso"
c:[Type == "https://schemas.microsoft.com/2014/03/psso"]
=> issue(claim = c);

總結:

單一登入體驗 ADFS 2012 R2
裝置是否已註冊?
ADFS 2016
裝置是否已註冊?
否 否 但 KMSI 是 否 否 但 KMSI 是
SSO=>設定重新整理權杖=> 8 小時 n/a n/a 8 小時 n/a n/a
PSSO=>設定重新整理權杖=> n/a 24 小時 7 天 n/a 24 小時 最多 90 天 (14 天的期間)
權杖存留期 1 小時 1 小時 1 小時 1 小時 1 小時 1 小時

已註冊的裝置? 您會取得 PSSO/持續性 SSO。

不是已註冊的裝置? 您會取得 SSO。

不是已註冊的裝置,而是 KMSI? 您會取得 PSSO/持續性 SSO。

如果:

  • [x] 管理員已啟用 KMSI 功能 [AND]
  • [x] 使用者選取了表單登入頁面上的 KMSI 核取方塊

  只有在較新重新整理權杖的有效期限超過先前的權杖時,AD FS 才會發出新的重新整理權杖。 權杖的最長存留期為 84 天,但 AD FS 會以 14 天的滾動期間維持權杖的有效性。 如果重新整理權杖有效期為 8 小時 (也就是正常 SSO 時間),則不會發出新的重新整理權杖。

須知事項:

對於未同步 LastPasswordChangeTimestamp 屬性的同盟使用者,會發出存留期上限值為 12 小時的工作階段 Cookie 和重新整理權杖。

由於 Microsoft Entra ID 無法判定何時吊銷與舊憑證有關的權杖,於是核發 Max Age 值工作階段 Cookie 並重新整理權杖。 舉例而言,此行為可能是由已變更的密碼所導致。 Microsoft Entra ID 必須更頻繁檢查,才能確定使用者和相關的權杖仍然有效。