如果您選擇 Google 做為服務供應商 (SP),而且在整合 SAML 型單一登入 (SSO) 與 Google Workspace 時 (或將兩者搭配使用時) 看到常見的錯誤訊息,請參考這份文件提供的解決步驟。
設定與啟用
「此網域尚未設定為使用 [單一登入]。」這項錯誤通常代表您嘗試將單一登入服務搭配 G Suite 標準 (免費) 版使用,但此版本並未支援單一登入 (SSO)。如果您確定自己使用的 Google Workspace 版本支援單一登入 (SSO),請檢查識別資訊提供者的設定,確認您已輸入正確的 Google Workspace 網域名稱。
如果您在使用設定檔設定單一登入 (SSO) 時看到這個錯誤,可能是因為您的 IdP 誤認為您使用的是貴機構的單一登入 (SSO) 設定檔。如果是這樣,您的 IdP 單一登入 (SSO) 設定檔設定只有在您用於調整貴機構的單一登入 (SSO) 設定檔時,才能使用這些設定。
這個錯誤代表 Google 管理控制台中的單一登入 (SSO) 設定不正確。請按照下列步驟修正問題:
- 在管理控制台中依序前往「安全性」「透過第三方 IdP 設定單一登入服務 (SSO)」,然後勾選「透過第三方識別資訊提供者設定 SSO」。
- 在對應的欄位中填入貴機構的登入網頁網址、登出網頁網址和變更密碼網頁網址。
- 選擇並上傳有效的驗證憑證檔案。
- 按一下 [儲存],接著請稍候片刻讓變更生效,然後重新測試整合作業。
剖析 SAML 回應
「要求的回應參數 SAMLResponse 遺失」這個錯誤代表您的識別資訊提供者並未將特定的有效 SAML 回應提供給 Google,這類問題大多是因為身分提供者中的設定錯誤所致。
- 請檢查您的識別資訊提供者記錄,確認識別資訊提供者並未受到任何限制,可以正常傳回 SAML 回應。
- 請確認識別資訊提供者傳送給 Google Workspace 的 SAML 回應並未經過加密處理。Google Workspace 只接受未加密的 SAML 回應。Microsoft 的 Active Directory Federation Services 2.0 通常會預設傳送經過加密的 SAML 回應,這點請特別留意。
SAML 2.0 規格要求識別資訊提供者從 Google Workspace 等資源提供者擷取及傳回 RelayState 網址參數。Google Workspace 會在 SAML 要求中將這個值提供給識別資訊提供者,而每次登入時提供的實際內容可能不同。在 SAML 回應中必須傳回完整的 RelayState,才能成功完成驗證。根據 SAML 標準規格,您的身分提供者不可在登入程序中修改 RelayState。
- 您可以在嘗試登入期間擷取 HTTP 標頭,進一步診斷問題。從 HTTP 標頭擷取 SAML 要求與回應中的 RelayState,確認兩者的 RelayState 值相符。
- 大多數市售或開放原始碼的 SSO 識別資訊提供者在預設狀態下都可以順利傳送 RelayState。為保障最佳安全性與可靠性,建議您使用這些現有的解決方案;我們無法為您的自訂 SSO 軟體提供支援。
SAML 回應內容
「由於您的登入要求含有無效的目的地/目標對象/收件人資訊,因此無法存取這項服務。請登入後再試一次。」這個錯誤表示 SAML 宣告中的 destination (目的地)、audience (目標對象) 或 recipient (收件人) 元素包含無效的資訊或沒有任何內容。SAML 宣告「必須」納入所有元素。請查看下表,瞭解各元素的說明與範例。
元素 | <Audience> |
---|---|
說明 | 用於辨識指定目標對象的 URI (該對象需要 ACS URI 的值)。注意:元素值不可為空白。 |
必要值 | https://www.google.com/a/<example.com>/acs |
範例 |
<saml:Conditions NotBefore="2014-11-05T17:31:37Z" |
元素 | <StatusResponseType> 類型的 Destination 屬性 |
---|---|
說明 | 傳送 SAML 斷言的目的地 URI。這是選用屬性,但如果經過宣告,就需要 ACS URI 的值。 |
必要值 | https://www.google.com/a/<example.com>/acs |
範例 |
<saml:Response |
元素 | <SubjectConfirmationData> 的 Recipient 屬性 |
---|---|
說明 |
|
必要值 | https://www.google.com/a/<example.com>/acs |
範例 |
<saml:Subject> |
如要進一步瞭解所有必要元素,請參閱單一登入 (SSO) 宣告需求。
這個錯誤通常表示您的識別資訊提供者傳送的 SAML 回應中缺少可讀取的 Recipient 值 (或 Recipient 值有誤);Recipient 值是 SAML 回應中的重要元件。
- 您可以在嘗試登入期間擷取 HTTP 標頭,進一步診斷問題。
- 從 HTTP 標頭擷取 SAML 要求和回應。
- 確認 SAML 回應中含有 Recipient 值,且該值與 SAML 要求中的值相符。
注意:這個錯誤訊息可能顯示為「您的登入要求含有無效的收件者資訊,因此無法存取這項服務。請登入後再試一次。」
這個錯誤代表您用於簽署驗證程序的憑證發生問題。出現這個錯誤的原因通常是用來簽署 SAML 回應的私密金鑰與 Google Workspace 記錄中的公用金鑰憑證不符。
如果您的 SAML 回應沒有可用的 Google 帳戶使用者名稱,也可能會發生這個錯誤。Google Workspace 會剖析 SAML 回應,從中擷取名為 NameID 的 XML 元素。這個元素應該會有 Google Workspace 使用者名稱或完整的 Google Workspace 電子郵件地址。
- 確認您已將有效憑證上傳到 Google Workspace,並視需要更換憑證。如要更換憑證,請在 Google 管理控制台中,依序前往 [安全性] [透過第三方 IdP 設定單一登入服務 (SSO)],然後按一下 [更換憑證]。
- 如果您在 NameID 元素中使用完整電子郵件地址 (使用單一登入 (SSO) 服務搭配多網域 Apps 環境時必須如此),請確認 NameID 元素的 Format 屬性指定使用完整電子郵件地址,範例如下:Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
- 確認在 NameID 元素中填入有效的使用者名稱或電子郵件地址。請擷取您傳送給 Google Workspace 的 SAML 回應,並檢查 NameID 元素的值。
- NameID 會區分大小寫:請確認透過 SAML 回應填入的 NameID 值大小寫與 Google Workspace 使用者名稱或電子郵件地址一致。
- 如果您的識別資訊提供者會將 SAML 斷言加密,請停用加密功能。
- 確認 SAML 回應中只有標準 ASCII 字元。這個問題最常發生於 AttributeStatement 中的 DisplayName、GivenName 和 Surname 屬性,例如:
- <Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
<AttributeValue>Blüte, Eva</AttributeValue> </Attribute> - <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<AttributeValue>Blüte</AttributeValue> </Attribute>
- <Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
想進一步瞭解如何設定 NameID 元素的格式,請參閱單一登入 (SSO) 宣告需求。
基於安全性考量,SSO 登入程序必須在特定的時間範圍內完成,否則無法順利完成驗證。如果身分提供者的時間設定錯誤,大多數或所有登入嘗試都會被誤認為超過限定時間範圍,造成驗證失敗,並顯示上述錯誤訊息。
- 檢查身分提供者伺服器的時間設定。這個錯誤幾乎都是因為身分提供者的時間設定不正確,造成 SAML 回應的時間戳記錯誤所致。
- 請將識別資訊提供者伺服器的時間設定與可靠的網際網路時間伺服器重新進行同步處理。作業環境中突然發生這類問題時,通常是因為上次同步處理失敗,導致伺服器時間變得不準確。只要重複執行時間同步作業 (請儘量選擇較可靠的時間伺服器) 即可迅速排解這類問題。
- 如果您透過先前的登入嘗試重新傳送 SAML,也可能會發生這類問題。檢查您的 SAML 要求與回應 (可在登入嘗試期間從 HTTP 標頭紀錄擷取),能協助您進一步除錯。
基於安全性考量,SSO 登入程序必須在特定的時間範圍內完成,否則無法順利完成驗證。如果身分提供者的時間設定錯誤,大多數或所有登入嘗試都會被誤認為超過限定時間範圍,造成驗證失敗,並顯示上述錯誤訊息。
- 檢查身分提供者伺服器的時間設定。這個錯誤幾乎都是因為身分提供者的時間設定不正確,造成 SAML 回應的時間戳記錯誤所致。
- 請將識別資訊提供者伺服器的時間設定與可靠的網際網路時間伺服器重新進行同步處理。作業環境中突然發生這類問題時,通常是因為上次同步處理失敗,導致伺服器時間變得不準確。只要重複執行時間同步作業 (盡可能選擇較可靠的時間伺服器) 即可迅速修復這類問題。