シングル サインオン(SSO)のトラブルシューティング

ここでは、サービス プロバイダ(SP)として Google を利用している場合に、G Suite と SAML ベースのシングル サインオン(SSO)の統合時または使用時に表示されることがあるエラー メッセージの解決手順を説明します。

設定と有効化

「このドメインは、シングル サインオンを使用するように設定されていません。」

通常このエラーは、G Suite の Standard Edition(無償版)でシングル サインオンを設定しようとした場合に表示されます。現在、G Suite(無償版)ではシングル サインオンはサポートされていません。G Suite、G Suite for Education、G Suite for ISPs をご利用の場合は、ID プロバイダの設定で G Suite のドメイン名が正しく入力されていることを確認してください。

「ドメインが正しく設定されていないため、このアカウントにアクセスできません。しばらくしてからもう一度お試しください。」

このエラーは、Google 管理コンソールでシングル サインオンが正しく設定されていないことを意味します。問題を解決するには、次の手順を実施してください。

  1. Google 管理コンソールで [セキュリティ] > [シングル サインオンの設定(SSO)] に移動し、[サードパーティの ID プロバイダで SSO を設定する] チェックボックスをオンにします。
  2. 組織のログインページの URL、ログアウト ページの URL、パスワード変更ページの URL を該当する欄に入力します。
  3. [認証の確認] 欄で有効な認証証明書ファイルを選択してアップロードします。
  4. [変更を保存] をクリックし、変更が反映されるまで数分待ってから、再び統合をテストします。

SAML レスポンスの解析

「必要な応答パラメータ SAMLResponse が見つかりませんでした」

このエラー メッセージは、ご使用の ID プロバイダが Google に対して特定の種類の有効な SAML レスポンスを提供していないことを意味します。ほとんどの場合、この問題は、ID プロバイダの設定に問題があることが原因です。

  • ID プロバイダのログを調べて、SAML レスポンスの送信を妨げている原因がないかどうかを確認します。
  • ID プロバイダから G Suite に送信される SAML レスポンスが暗号化されていないことを確認します。G Suite は、暗号化された SAML レスポンスを受け付けません。特に Microsoft の Active Directory フェデレーション サービス 2.0 では、送信する SAML レスポンスを暗号化するようにデフォルト設定されていることが多いのでご注意ください。
「必要な応答パラメータ RelayState が見つかりませんでした」

SAML 2.0 の仕様では、ID プロバイダがリソース プロバイダ(G Suite など)から RelayState URL パラメータを取得して送り返す必要があります。この値は、G Suite から ID プロバイダに SAML リクエストで提供され、ログインのたびにその内容が異なります。認証を完了するには、返される SAML レスポンスに正確な RelayState が含まれている必要があります。SAML 標準仕様では、ログインフロー中に ID プロバイダが RelayState を変更しないよう定められています。

  • この問題を詳しく調査するには、ログイン試行時に HTTP ヘッダーを取得します。HTTP ヘッダーから SAML リクエストと SAML レスポンスの両方の RelayState を抽出し、リクエストとレスポンスの RelayState 値が一致していることを確認します。
  • 商用またはオープンソースの SSO ID プロバイダの多くは、デフォルトで RelayState をシームレスに送信します。最適な安全性と信頼性が得られるように、既存のソリューションを使用することをおすすめします。独自のカスタム SSO ソフトウェアについては、Google でサポートを提供することはできません。

SAML レスポンスの内容

「ログイン リクエストに無効な [destination|audience|recipient] 情報が含まれていたため、このサービスにアクセスできません。ログインしてから、もう一度お試しください。」

このエラーは、SAML アサーションの destinationaudience、または recipient 要素に無効な情報が含まれていたか、何も含まれていなかったことを意味します。すべての要素が SAML アサーションに含まれている必要があります。各要素の説明と例については、次の表をご覧ください。

要素 <Audience>
説明 ACS URI の値を必要とする、目的のオーディエンスを指定する URI。注: 要素値を空白にすることはできません。
必要な値 https://www.google.com/a/<yourdomain.com>/acs

<saml:Conditions
NotBefore="2014-11-05T17:31:37Z"

NotOnOrAfter="2014-11-05T17:37:07Z"
<saml:AudienceRestriction>
<saml:Audience>https://wwww.google.com/a/yourdomain.com/acs<saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>

 

要素 <StatusResponseType> タイプの Destination 属性
説明 SAML アサーションの送信先 URI。省略可能ですが、宣言する場合は ACS URI の値が必要です。
必要な値 https://www.google.com/a/<yourdomain.com>/acs

<saml:Response
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"

xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="7840062d379d82598d87ca04c8622f436bb03aa1c7"
Version="2.0"
IssueInstant="2014-11-05T17:32:07Z"

Destination+"https://wwww.google.com/a/[ドメイン名].com/acs
       InResponseTo="midihfjkfkpcmbmfhhoehbokhbkeapbbinldpeen">

 

要素 <SubjectConfirmationData> の Recipient 属性
 
説明

Recipient 属性は、Subject の宛先となるエンティティを
定義します。

必須属性であり、ACS URI を含む必要があります。

注: 大文字と小文字が区別されます。

 

必要な

https://www.google.com/a/<yourdomain.com>/acs
 

<saml:Subject>

<saml:NameID SPNameQualifier="google.com/a/[ドメイン名].com"

Format="urn:oasis:names:tc:SAML:2.0:nameid-format:email">[お名前]@[ドメイン名].com</saml:NameID>

<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">

<saml:SubjectConfirmationData NotOnOrAfter="2014-11-05T17:37:07Z"

Recipient="https://www.google.com/a/yourdomain.com/acs"

InResponseTo="midihfjkfkpcmbmfhjoehbokhbkeapbbinldpeen"

</saml:SubjectConfirmation> 

すべての必須要素について詳しくは、SSO アサーションの要件の記事をご覧ください。

「ログイン リクエストに宛先情報が含まれていなかったため、このサービスにはアクセスできません。ログインしてから、もう一度お試しください。」

通常このエラーは、ID プロバイダからの SAML レスポンスに読み取り可能な Recipient 値がない(または Recipient 値が正しくない)ことを意味します。Recipient 値は SAML レスポンスの重要な要素です。

  1. この問題を詳しく調査するには、ログイン試行時に HTTP ヘッダーを取得します。
  2. HTTP ヘッダーから SAML リクエストと SAML レスポンスを抽出します。
  3. SAML レスポンス内に Recipient 値が存在し、SAML リクエスト内の値と一致していることを確認します。

注: 「ログイン リクエストに無効な宛先情報が含まれていたため、このサービスにはアクセスできません。ログインしてから、もう一度お試しください」というエラー メッセージが表示される場合もあります。

「ログイン資格情報を確認できないため、このアカウントにはアクセスできません。」

このエラーは、認証フローの署名に使用している証明書に問題があることを意味します。具体的な原因としては、SAML レスポンスの署名に使用される秘密鍵が G Suite に登録されている公開鍵証明書と一致していないことがよくあります。

このエラーは、SAML レスポンスに有効な Google アカウントのユーザー名が含まれていないことを意味する場合もあります。G Suite は、SAML レスポンスの NameID という XML 要素を解析し、この要素に G Suite のユーザー名または完全なメールアドレスが含まれていることを確認します。

  • Google 管理コンソールで [高度なツール] > [シングル サインオン(SSO)の設定] をクリックして、SSO の設定ページにアクセスします。有効な証明書を使用していることを確認して、SSO 設定フォームからもう一度アップロードします。
  • NameID 要素に完全なメールアドレスを使用している場合(マルチドメインの Google 管理コンソール環境で SSO を使用している場合はこれに該当します)、NameID 要素の Format 属性で完全なメールアドレスの使用が指定されていることを確認します(例: Format="urn:oasis:names:tc:SAML:2.0:nameid-format:email")。
  • NameID 要素に、有効なユーザー名またはメールアドレス以外の値(データベースの ID 欄など)が入力されていないことを確認します。そのためには、G Suite に送信している SAML レスポンスを抽出し、NameID 要素の値が正しいかどうかを調べます。
  • ID プロバイダで SAML アサーションが暗号化される場合は、この暗号化を無効にしてください。Google 管理コンソールが読み取れるように、暗号化されていない形式でアサーションが Google に送信されるようにする必要があります。
  • 標準の ASCII 文字以外が SAML レスポンスに含まれていないことを確認します。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/givenname">
<AttributeValue>Eva</AttributeValue>
</Attribute>
<Attribute  
Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<AttributeValue>Blüte</AttributeValue>
</Attribute>

これらの属性はサポートされていないため、省略しても構いません。省略できない場合は、
標準の ASCII 文字のみを使用するようにしてください。
 

「ログイン資格の有効期限が切れたため、このサービスにはアクセスできません。ログインしてから、もう一度お試しください。」

セキュリティ上の理由から、SSO ログインフローは所定の時間内に完了する必要があります。所定の時間内に完了しない場合、認証に失敗します。ID プロバイダの時刻が合っていない場合、ほとんどまたはすべてのログイン試行が所定時間を超過するため、認証に失敗して上記のエラー メッセージが表示されます。

  • ID プロバイダのサーバーの時刻をご確認ください。通常このエラーは、ID プロバイダの時刻が合っていないために、SAML レスポンスのタイムスタンプが正しくないことが原因です。
  • ID プロバイダのサーバーの時刻を信頼できるインターネット時刻サーバーと再同期します。この問題が本番環境で突然発生した場合は、前回、時刻の同期に失敗し、サーバーの時刻が不正確になったことが原因であることがほとんどです。この問題は、(可能な限り信頼性の高い時刻サーバーと)時刻を繰り返し同期させることで迅速に解決できます。
  • この問題は、前回のログイン試行の SAML を再送信している場合にも発生することがあります。SAML リクエストと SAML レスポンス(ログイン試行時に取得した HTTP ヘッダーログから取得)を調べると、この問題を詳しく調査してデバッグするのに役立ちます。
「ログイン資格情報を確認できないため、このサービスにはアクセスできません。ログインしてから、もう一度お試しください。」

セキュリティ上の理由から、SSO ログインフローは所定の時間内に完了する必要があります。所定の時間内に完了しない場合、認証に失敗します。ID プロバイダの時刻が合っていない場合、ほとんどまたはすべてのログイン試行が所定時間を超過するため、認証に失敗して上記のエラー メッセージが表示されます。

  • ID プロバイダのサーバーの時刻をご確認ください。通常このエラーは、ID プロバイダの時刻が合っていないために、SAML レスポンスのタイムスタンプが正しくないことが原因です。
  • ID プロバイダのサーバーの時刻を信頼できるインターネット時刻サーバーと再同期します。この問題が本番環境で突然発生した場合は、前回、時刻の同期に失敗し、サーバーの時刻が不正確になったことが原因であることがほとんどです。この問題は、(可能な限り信頼性の高い時刻サーバーと)時刻を繰り返し同期させることで迅速に解決できます。
この情報は役に立ちましたか?
改善できる点がありましたらお聞かせください。