Microsoft Entra 無縫單一登入:技術深入探討
本文提供您技術詳細資料,說明 Microsoft Entra 無縫單一登入 (無縫 SSO) 功能的運作方式。
順暢 SSO 如何運作?
本節包含三個相關部分:
- 無縫 SSO 功能的設定。
- 網頁瀏覽器上的單一使用者登入交易如何與「無縫 SSO」搭配運作。
- 原生用戶端上的單一使用者登入交易如何與「無縫 SSO」搭配運作。
設定如何運作?
使用 Microsoft Entra Connect 啟用無縫 SSO,如 這裡 所示。 啟用此功能時,會執行下列步驟:
- 每一個 AD 樹系中的內部部署 Active Directory (AD) 中會建立一個電腦帳戶 (
AZUREADSSOACC
),這些樹系會同步處理到 Microsoft Entra ID (使用 Microsoft Entra Connect)。 - 此外,系統會在Microsoft Entra 登入程式期間建立數個 Kerberos 服務主體名稱 (SPN) 以供使用。
- 電腦帳戶的 Kerberos 解密金鑰會安全地與 Microsoft Entra ID 共用。 如果有多個 AD 樹系,則每個電腦帳戶有自己唯一的 Kerberos 解密金鑰。
重要
基於安全考量,AZUREADSSOACC
電腦帳戶需要高度保護。 只有網域管理員能管理電腦帳戶。 請確定已停用此電腦帳戶上的 Kerberos 委派,且 Active Directory 中沒有其他帳戶具有 AZUREADSSOACC
電腦帳戶的委派權限。 將電腦帳戶儲存在組織單位 (OU) 中,以避免遭到意外刪除,並且只有網域管理員擁有存取權。 此電腦帳戶上的 Kerberos 解密金鑰也應視為機密。 強烈建議您至少每隔 30 天變換一次 電腦帳戶的 AZUREADSSOACC
。
重要
無縫 SSO 支援 Kerberos 使用 AES256_HMAC_SHA1
、AES128_HMAC_SHA1
和 RC4_HMAC_MD5
加密類型。 建議將 AzureADSSOAcc$
帳戶的加密類型設定為 AES256_HMAC_SHA1
,或其中一個 AES 類型。RC4 以取得新增的安全性。 在 Active Directory 中,加密類型儲存在帳戶的 msDS-SupportedEncryptionTypes
屬性中。 如果 AzureADSSOAcc$
帳戶加密類型設定為 RC4_HMAC_MD5
,但您想要變更為其中一種 AES 加密類型,請務必先變換 AzureADSSOAcc$
帳戶的 Kerberos 解密金鑰,如常見問題集文件中的相關問題所述,否則無縫 SSO 不會發生。
設定完成之後,無縫 SSO 的運作就如同其他任何使用整合式 Windows 驗證 (IWA) 的登入一樣。
網頁瀏覽器上的登入如何與無縫 SSO 搭配運作?
網頁瀏覽器上的登入流程如下:
使用者從公司網路內已加入網域的公司裝置上,嘗試存取 Web 應用程式 (例如 Outlook Web App - https://outlook.office365.com/owa/)。
如果使用者尚未登入,則會將使用者重新導向至 Microsoft Entra 登入頁面。
使用者將其用使用者稱輸入 Microsoft Entra 登入頁面。
注意
針對某些應用程式,會略過步驟 2 和 3。
在背景中使用 JavaScript,Microsoft Entra ID 會透過 401 未經授權回應,挑戰瀏覽器提供 Kerberos 票證。
瀏覽器接著會向 Active Directory 要求
AZUREADSSOACC
電腦帳戶 (代表 Microsoft Entra ID) 的票證。Active Directory 會找出該電腦帳戶,並將 Kerberos 票證傳回給瀏覽器 (使用電腦帳戶的祕密加密)。
瀏覽器會將它從 Active Directory 取得的 Kerberos 票證轉送至 Microsoft Entra ID。
Microsoft Entra ID 會解密 Kerberos 票證,其中包含使用先前共用金鑰登入公司裝置的使用者身分識別。
評估之後,Microsoft Entra ID 會回傳令牌給應用程式,或要求使用者執行額外驗證,例如多重要素驗證。
如果使用者登入成功,則使用者可以存取應用程式。
下圖說明所有元件和相關步驟。
無縫 SSO 是機會主義的。 這表示如果失敗,登入體驗會回復到其正常行為。 在此情況下,用戶必須輸入其密碼才能登入。
原生用戶端上的登入如何與無縫 SSO 搭配運作?
原生用戶端上的登入流程如下:
- 使用者嘗試從公司網路內已加入網域的公司裝置存取原生應用程式 (例如 Outlook 用戶端)。
- 如果使用者尚未登入,原生應用程式會從裝置的 Windows 會話擷取使用者的用戶名稱。
- 應用程式會將使用者名稱傳送至 Microsoft Entra ID,並擷取租用戶的 WS-Trust MEX 端點。 此 WS-Trust 端點是專門由無縫 SSO 功能使用,並不是 Microsoft Entra ID 上 WS-Trust 通訊協定的一般實作。
- 應用程式會接著查詢 WS-Trust MEX 端點,以了解是否有可用的整合式驗證端點。 「無縫 SSO」功能會以獨佔方式使用整合式驗證端點。
- 如果步驟 4 成功,就會發出 Kerberos 查問。
- 如果應用程式能夠擷取 Kerberos 票證,則會將它轉送至 Microsoft Entra 整合式驗證端點。
- Microsoft Entra ID 會解密 Kerberos 票證並加以驗證。
- Microsoft Entra ID 會登入使用者,並簽發 SAML 權仗給應用程式。
- 然後,應用程式會將 SAML 權仗提交至 Microsoft Entra ID OAuth2 權仗端點。
- Microsoft Entra ID 會驗證 SAML 令牌,併發出存取令牌、指定資源的重新整理令牌,以及應用程式的識別元令牌。
- 使用者會取得應用程式資源的存取權。
下圖說明所有元件和相關步驟。