合作夥伴提供的 SAML 單一登入 (SSO) 服務

安全宣告標記語言 (SAML) 是一種 XML 標準,可讓安全的網域互相交換使用者驗證與使用者授權資料。線上服務供應商可以使用 SAML 與個別線上身分提供者聯絡,對嘗試存取安全內容的使用者加以驗證。

Google 提供 SAML 式單一登入 (SSO) 服務,可讓合作夥伴公司完全掌控代管使用者帳戶 (可存取 Gmail 或 Google 日曆等網路應用程式) 的授權與驗證過程。在 SAML 模式下,Google 是以「服務供應商」的身分提供 Gmail 和起始網頁等服務。Google 的合作夥伴則是以「身分識別提供者」的身分來管理使用者名稱、密碼以及其他用來識別、驗證和授權使用者的資訊,讓使用者能夠使用 Google 提供的網路應用程式。目前市面上有一些開放原始碼商用的識別資訊提供者解決方案,可協助您實作 SSO 以使用 Google 服務。

請注意,SSO 解決方案僅適用於網路應用程式。如要讓使用者透過 Outlook 等桌面用戶端存取 Google 服務 (例如使用 Outlook 透過 POP 存取 Gmail),您仍然必須為使用者提供適用密碼,並使用 Admin SDK 的 Directory API 將這些密碼與內部使用者資料庫保持同步。此外,同步處理密碼時,瞭解使用者如何透過管理控制台登入網址進行驗證,將能更順利進行相關作業。

Google SSO 服務符合 SAML v2.0 規格。許多知名的供應商也都支援 SAML v2.0。

瞭解合作夥伴提供的 SAML 式 SSO 服務

以下部分說明使用者如何透過合作夥伴提供的 SAML 式 SSO 服務,登入我們提供的 Google 應用程式。

下圖 1 是使用者透過 SAML 式 SSO 服務登入 Google 應用程式 (例如 Gmail) 的完整流程。後面的編號清單則依序列出圖片中每個步驟的詳細說明。

注意:進行這項程序前,合作夥伴必須向 Google 提供 SSO 服務網址和公開金鑰,以供 Google 驗證 SAML 回應。

圖 1:透過合作夥伴提供的 SAML 式 SSO 服務登入 Google

這張圖包含以下步驟。

  1. 使用者嘗試存取我們提供的 Google 應用程式,例如 Gmail、起始網頁或其他 Google 服務。
  2. Google 產生 SAML 驗證要求。這個 SAML 要求會在編碼後嵌入合作夥伴的 SSO 服務網址。使用者嘗試存取的 Google 應用程式網址經過編碼後,也會以 RelayState 參數的形式嵌入 SSO 網址。這個 RelayState 參數的意義是做為不易解讀的識別碼,傳回時不必經過修改或檢查。
  3. Google 向使用者的瀏覽器傳送重新導向網址。這個重新導向網址包含經過編碼的 SAML 驗證要求,後者也會提交至合作夥伴的 SSO 服務。
  4. 合作夥伴對 SAML 要求進行解碼,並擷取 Google 宣告客戶服務 (ACS) 網址和使用者的實際連結網址 (RelayState 參數),然後對使用者進行驗證。進行驗證時,合作夥伴可以要求使用者提供有效的登入憑證,或檢查有效的工作階段 Cookie。
  5. 合作夥伴產生 SAML 回應,內含已驗證使用者的使用者名稱。根據 SAML 2.0 規格,這個回應會加上數位簽名,包含合作夥伴的公開與私密 DSA/RSA 金鑰。
  6. 合作夥伴對 SAML 回應和 RelayState 參數進行編碼,然後將這些資訊傳回使用者的瀏覽器。合作夥伴會提供轉送機制,讓瀏覽器將這些資訊轉送至 Google 的 ACS。舉例來說,合作夥伴可將 SAML 回應和實際連結網址嵌入表單,然後讓使用者只要點選按鈕,就能將這個表單提交給 Google;或是在網頁中加入能自動將這個表單提交給 Google 的 JavaScript。
  7. Google 的 ACS 使用合作夥伴的公開金鑰對 SAML 回應進行驗證。如果回應通過驗證,ACS 會將使用者重新導向至實際連結網址。
  8. 使用者已重新導向至實際連結網址,並登入 Google。
這對您有幫助嗎?
我們應如何改進呢?