您可以設定 Cloud Identity 或 Google Workspace 帳戶,使用單一登入 (SSO)。啟用 SSO 後,使用者嘗試存取 Google 服務時,系統不會提示他們輸入密碼。而是重新導向至外部識別資訊提供者 (IdP) 進行驗證。
使用單一登入可帶來以下優點:
- 使用者可以透過現有憑證進行驗證,不必經常輸入憑證,因此能獲得更優質的體驗。
- 您確保現有 IdP 仍是驗證使用者的記錄系統。
- 您不必將密碼同步到 Cloud Identity 或 Google Workspace。
如要使用單一登入,使用者必須在 Cloud Identity 或 Google Workspace 中擁有使用者帳戶,並在外部 IdP 中擁有相應的身分識別。因此,單一登入通常會搭配外部授權來源使用,自動將使用者佈建至 Cloud Identity 或 Google Workspace。
單一登入程序
Cloud Identity 和 Google Workspace 支援安全宣告標記語言 (SAML) 2.0,可供單一登入。SAML 是一種開放標準,可讓 SAML IdP 與 SAML 服務供應商交換驗證和授權資料。使用 Cloud Identity 或 Google Workspace 的 SSO 時,外部 IdP 是 SAML IdP,而 Google 是 SAML 服務供應商。
Google 會實作 SAML 2.0 HTTP POST 繫結。這個繫結會指定 SAML IdP 和 SAML 服務供應商之間的身分驗證資訊交換方式。下圖說明使用 SSO 存取 Google Cloud 控制台時,這個程序的運作方式。
- 將瀏覽器指向 Google Cloud 主控台 (或任何需要驗證的 Google 資源)。
- 由於您尚未通過驗證, Google Cloud 控制台會將瀏覽器重新導向至 Google 登入頁面。
- Google 登入會傳回登入頁面,提示您輸入電子郵件地址。
- 輸入電子郵件地址並提交表單。
- Google 登入會尋找與您電子郵件地址相關聯的 Cloud Identity 或 Google Workspace 帳戶。
由於相關聯的 Cloud Identity 或 Google Workspace 帳戶已啟用單一登入,因此 Google 登入會將瀏覽器重新導向至已設定的外部 IdP 網址。發出重新導向前,系統會在網址中加入兩個參數:
RelayState
和SAMLRequest
。RelayState
包含外部 IdP 稍後應傳回的 ID。包含 SAML 驗證要求,也就是經過壓縮、Base64 編碼和網址編碼的 XML 文件。
SAMLRequest
解碼後的 SAML 驗證要求如下所示:<samlp:AuthnRequest ProviderName="google.com" IsPassive="false" AssertionConsumerServiceURL="https://www.google.com/a/example.com/acs" ...> <saml:Issuer xmlns:saml="...">google.com</saml:Issuer> <samlp:NameIDPolicy AllowCreate="true" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/> </samlp:AuthnRequest>
這個要求範例會指示外部 IdP 驗證使用者、為目標對象
google.com
建立 SAML 聲明,並將聲明發布至https://www.google.com/a/example.com/acs
的聲明消費者服務 (ACS)。ACS 網址 (
example.com
) 中嵌入的網域對應於 Google Workspace 或 Cloud Identity 帳戶的主網域。如果您在設定 SSO 時使用網域專屬簽發者功能,簽發者會是
google.com/a/DOMAIN
,而不是google.com
,其中DOMAIN
是 Cloud Identity 或 Google Workspace 帳戶的主網域。外部 IdP 執行驗證的步驟取決於 IdP 及其設定,例如可能會顯示登入對話方塊,或提示進行多重驗證或指紋驗證。成功完成這些步驟後,系統會繼續進行 SAML 交換程序:
外部 IdP 會傳回特別製作的 HTML 網頁,讓瀏覽器立即將 HTTP POST 要求傳送至 ACS 網址。這項要求包含兩個參數:
RelayState
,其中包含原始值,該值最初是在 SAML 驗證要求中傳遞至 IdP。SAMLResponse
,其中包含 base64 編碼的 SAML 判斷。SAML 聲明是 XML 文件,指出 IdP 已成功驗證使用者。解碼後的 SAML 判斷大致如下:<samlp:Response ...> ... <Assertion x...> <Issuer>https://idp.example.org/</Issuer> <Signature ...> ... </Signature> <Subject> <NameID Format="...:nameid-format:emailAddress">bob@example.org</NameID> ... </Subject> <Conditions NotBefore="..." NotOnOrAfter="..."> <AudienceRestriction> <Audience>google.com</Audience> </AudienceRestriction> </Conditions> <AttributeStatement> ... </AttributeStatement> <AuthnStatement AuthnInstant="..." ...> <AuthnContext> <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef> </AuthnContext> </AuthnStatement> </Assertion> </samlp:Response>
這項範例聲明是針對目標對象
google.com
(與 SAML 驗證要求的發行者相符) 發行,並指出 IdPhttps://idp.example.org/
已驗證使用者bob@example.org
。SAML 聲明也包含數位簽章。IdP 會使用簽署憑證的私密金鑰建立這個簽章。私密金鑰只有 IdP 知道。對應的公開金鑰是 Cloud Identity 或 Google Workspace 中 SSO 設定的一部分,並與 Google 登入服務共用。
SAML 聲明也包含數位簽章,可供 SAML 服務供應商驗證聲明的真實性。
瀏覽器會將 SAML 宣告發布至 Google ACS 端點。
ACS 端點會驗證 SAML 聲明的數位簽章。這項檢查可確保聲明來自受信任的外部 IdP,且未遭竄改。假設簽章有效,ACS 端點就會分析判斷內容,包括驗證目標對象資訊和讀取
NameID
屬性。ACS 端點會比對 SAML 判斷與使用者的主要電子郵件地址,藉此查詢使用者帳戶。
NameID
端點隨即啟動工作階段。端點會根據
RelayState
參數中編碼的資訊,判斷您原本要存取的資源網址,並將您重新導向至 Google Cloud 控制台。
IdP 啟動的登入
上一節所述的程序有時稱為「服務供應商啟動的登入」,因為程序是從服務供應商開始,以上述範例來說,就是 Google Cloud 控制台。
SAML 也定義了替代流程,稱為 IdP 啟動的登入程序,這個流程從 IdP 開始。Google 不支援這個流程,但您可以使用下列網址啟動服務供應商發起的登入程序,達到類似結果:
https://www.google.com/a/DOMAIN/ServiceLogin?continue=https://console.cloud.google.com/
在本例中,DOMAIN
是 Cloud Identity 或 Google Workspace 帳戶的主網域。
多重驗證
為保護使用者帳戶免於未經授權的存取,您可以要求使用者在驗證期間提供第二個驗證要素。使用單一登入時,您可以透過下列兩種方式實作多重驗證:
- 如果外部 IdP 支援多重驗證,您可以讓外部 IdP 在 SAML 登入程序中執行多重驗證。在這種情況下,您不需要在 Cloud Identity 或 Google Workspace 中進行額外設定。
- 如果 IdP 不支援多重驗證,您可以設定 Cloud Identity 或 Google Workspace 帳戶,在使用者透過外部 IdP 驗證身分後,立即執行兩步驟驗證。
網路
在 SAML 2.0 HTTP 重新導向繫結中,IdP 和服務供應商不會直接通訊。而是會透過使用者的瀏覽器轉送所有通訊內容,如下圖所示:
根據這個架構,只要使用者能從公司網路存取 IdP,IdP 就不必透過網際網路公開,甚至不必連上網際網路。
設定外部 IdP
您可以使用下列功能,透過 Cloud Identity 和 Google Workspace 設定單一登入:
SAML 設定檔:您可以為要整合的每個 IdP 建立 SAML 設定檔。接著,您可以為 Cloud Identity 或 Google Workspace 帳戶中的每位使用者、群組或機構單位,決定是否必須使用單一登入,以及必須使用哪個 SAML 設定檔。
舊版 SAML 設定檔 (舊稱機構單一登入 (SSO) 設定檔): 您可以使用舊版 SAML 設定檔與單一 IdP 整合。 接著,您可以為 Cloud Identity 或 Google Workspace 帳戶中的每位使用者、群組或機構單位,決定是否必須使用單一登入。
正確設定 IdP 的方式,取決於您使用的是 SAML 設定檔或舊版 SAML 設定檔。下表列出通常必須在外部 IdP 中設定的項目,有助於確保相容性。
設定 | 舊版 SAML 設定檔的必要設定 |
SAML 設定檔的必要設定 |
附註 |
---|---|---|---|
名稱 ID | 使用者的主要電子郵件地址 | 使用者的主要電子郵件地址 | |
名稱 ID 格式 | urn:oasis:names:tc:SAML:1.1: |
urn:oasis:names:tc:SAML:1.1: |
|
實體 ID |
如果啟用網域特定發行者功能:
如果停用網域特定發行者功能 (預設):
如要將多個 Google Workspace 或 Cloud Identity 帳戶與同一個 IdP 整合,請使用網域專屬的簽發者功能。否則請停用這項設定。 |
SAML 設定檔的專屬實體 ID。 視 SAML 設定檔的建立日期而定,實體 ID 會採用下列其中一種格式:
|
|
ACS 網址模式 (或重新導向網址) | https://www.google.com/a/* |
SAML 設定檔的專屬 ACS 網址。 網址格式會依 SAML 設定檔的建立日期而異, 請使用下列其中一種格式:
|
|
要求簽署 | 關閉 | 關閉 | Google 登入服務核發的 SAML 驗證要求一律不會簽署 |
斷言簽署 | 開啟 | 開啟 | SAML 聲明必須經過簽署,Google 登入才能驗證聲明的真實性。 在管理控制台中設定單一登入時,您必須上傳權杖簽署金鑰配對的公開金鑰。 |
斷言加密 | 關閉 | 關閉 | |
簽署演算法 | RSA-SHA256 | RSA-SHA256 | RSA-SHA256 有時會縮寫為 RS256 |
後續步驟
- 查看與外部 IdP 整合的參考架構。
- 瞭解如何使用 Azure AD 或 Active Directory 設定帳戶佈建和單一登入。
- 請參閱連結外部 IdP 的最佳做法 Google Cloud 。