Microsoft Entra 無縫單一登錄:技術深入探討

本文提供 Microsoft Entra 無縫單一登錄 (無縫 SSO) 功能運作方式的技術詳細數據。

順暢 SSO 如何運作?

本節有三個部分:

  1. 無縫 SSO 功能的設定。
  2. 網頁瀏覽器上的單一使用者登入交易如何與無縫 SSO 搭配運作。
  3. 原生用戶端上的單一使用者登入交易如何與無縫 SSO 搭配運作。

設定如何運作?

使用 Microsoft Entra 連線 啟用無縫 SSO,如下所示。 啟用此功能時,會發生下列步驟:

  • 您同步處理至 Microsoft Entra 識別碼的每個 AD 樹系中,都會在您的 內部部署的 Active Directory (AD) 中建立一個電腦帳戶AZUREADSSOACC (使用 Microsoft Entra 連線)。
  • 此外,Microsoft Entra 登入程式期間會建立一些 Kerberos 服務主體名稱 (SPN)。
  • 計算機帳戶的 Kerberos 解密金鑰會安全地與 Microsoft Entra 識別碼共用。 如果有多個 AD 樹系,每個電腦帳戶都會有自己的唯一 Kerberos 解密密鑰。

重要

基於 AZUREADSSOACC 安全性考慮,計算機帳戶必須受到強烈保護。 只有網域 管理員 才能管理計算機帳戶。 請確定計算機帳戶上的 Kerberos 委派已停用,且 Active Directory 中的其他帳戶在電腦帳戶上 AZUREADSSOACC 沒有委派許可權。 將計算機帳戶儲存在組織單位(OU)中,讓計算機帳戶免於意外刪除,且只有網域 管理員 可以存取。 計算機帳戶上的 Kerberos 解密金鑰也應該被視為敏感性。 強烈建議您至少每隔 30 天變換電腦帳戶的 AZUREADSSOACC Kerberos 解密密鑰

重要

無縫 SSO 支援 Kerberos 的 AES256_HMAC_SHA1AES128_HMAC_SHA1RC4_HMAC_MD5 加密類型。 建議將帳戶的 AzureADSSOAcc$ 加密類型設定為 AES256_HMAC_SHA1,或其中一種 AES 類型與 RC4,以增加安全性。 加密類型會儲存在 msDS-SupportedEncryptionTypes Active Directory 中帳戶的 屬性上。 AzureADSSOAcc$如果帳戶加密類型設定為 RC4_HMAC_MD5,而且您想要將它變更為其中一個 AES 加密類型,請確定您先變換帳戶的 AzureADSSOAcc$ Kerberos 解密密鑰,如常見問題檔中的相關問題所述,否則不會發生無縫 SSO。

設定完成後,無縫 SSO 的運作方式與使用整合式 Windows 驗證 (IWA) 的任何其他登入相同。

網頁瀏覽器上的登入如何與無縫 SSO 搭配運作?

網頁瀏覽器上的登入流程如下所示:

  1. 用戶嘗試從公司網路內已加入網域的公司裝置存取 Web 應用程式(例如 Outlook Web 應用程式 - https://outlook.office365.com/owa/)。

  2. 如果使用者尚未登入,則會將使用者重新導向至 Microsoft Entra 登入頁面。

  3. 使用者在其用戶名稱中輸入 Microsoft Entra 登入頁面。

    注意

    針對特定 應用程式,會略過步驟 2 和 3。

  4. 在背景中使用 JavaScript 時,Microsoft Entra ID 會透過 401 未經授權回應來挑戰瀏覽器,以提供 Kerberos 票證。

  5. 瀏覽器接著會向 Active Directory AZUREADSSOACC 要求電腦帳戶的票證(代表 Microsoft Entra ID)。

  6. Active Directory 會找出電腦帳戶,並將 Kerberos 票證傳回以電腦帳戶密碼加密的瀏覽器。

  7. 瀏覽器會將從 Active Directory 取得的 Kerberos 票證轉送至 Microsoft Entra ID。

  8. Microsoft Entra ID 會解密 Kerberos 票證,其中包含使用先前共用密鑰登入公司裝置的使用者身分識別。

  9. 評估之後,Microsoft Entra ID 會傳回令牌給應用程式,或要求使用者執行其他證明,例如 Multi-Factor Authentication。

  10. 如果使用者登入成功,用戶就能夠存取應用程式。

下圖說明所有相關元件和相關步驟。

Seamless Single Sign On - Web app flow

無縫 SSO 是機會性 SSO,這表示如果失敗,登入體驗會回復為其一般行為,也就是用戶必須輸入其密碼才能登入。

原生用戶端上的登入如何與無縫 SSO 搭配運作?

原生用戶端上的登入流程如下所示:

  1. 用戶嘗試從公司網路內已加入網域的公司裝置存取原生應用程式(例如 Outlook 用戶端)。
  2. 如果使用者尚未登入,原生應用程式會從裝置的 Windows 會話擷取使用者的用戶名稱。
  3. 應用程式會將使用者名稱傳送至 Microsoft Entra 識別碼,並擷取租使用者的 WS-Trust MEX 端點。 此 WS-Trust 端點是由無縫 SSO 功能獨佔使用,不是 Microsoft Entra 識別碼上的 WS-Trust 通訊協定一般實作。
  4. 然後應用程式會查詢 WS-Trust MEX 端點,以查看整合式驗證端點是否可用。 整合式驗證端點是由無縫 SSO 功能獨佔使用。
  5. 如果步驟 4 成功,則會發出 Kerberos 挑戰。
  6. 如果應用程式能夠擷取 Kerberos 票證,則會將其轉送至 Microsoft Entra 整合式驗證端點。
  7. Microsoft Entra ID 會解密 Kerberos 票證並加以驗證。
  8. Microsoft Entra ID 會將使用者登入,並將 SAML 令牌發行給應用程式。
  9. 然後,應用程式會將 SAML 令牌提交至 Microsoft Entra ID OAuth2 令牌端點。
  10. Microsoft Entra ID 會驗證 SAML 令牌,併發出應用程式存取令牌和指定資源的重新整理令牌,以及識別元令牌。
  11. 使用者取得應用程式資源的存取權。

下圖說明所有相關元件和相關步驟。

Seamless Single Sign On - Native app flow

下一步

  • 快速入門 - 啟動並執行 Microsoft Entra 無縫 SSO。
  • 常見問題 - 常見問題的解答。
  • 疑難解答 - 瞭解如何解決功能的常見問題。
  • UserVoice - 用於提出新功能要求。