> ## Documentation Index
> Fetch the complete documentation index at: https://domoinc-openapi-sync-dataflows.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# SAMLを使用したシングルサインオンのトラブルシューティング

## はじめに

この記事では、Okta、ADFS、PingIdentityなど、SAMLを使用したシングルサインオンに関するトラブルシューティングを次のカテゴリーで説明します。

* [SAML要求とSAML応答](#SAMLRequestsAndResponses)
* [基本的なトラブルシューティング](#BasicTroubleshooting)
* [SAML要求のトラブルシューティング](#TroubleshootSAMLRequests)
* [SAML応答のトラブルシューティング](#TroubleshootSAMLResponses)

## SAML要求とSAML応答

シングルサインオン（SSO）のログインには、SAML（Security Assertion Markup Language）と呼ばれる特別な通信プロトコルが使用されます。

SAML要求とは、ログイン時にDomoからIdPに送信されるメッセージです。このメッセージには、Domoインスタンスに関する識別情報が含まれているため、IdPはユーザーがどのシステムにサインインしようとしているかを把握できます。Domoの設定によっては、ログイン要求がDomoから発信されたことを認証するためのデジタル証明書が含まれる場合もあります。

SAML応答とは、ログイン時にIdPからDomoに送信されるメッセージです。このメッセージには、ログインするユーザーに関する識別情報が含まれているため、Domoはユーザーが誰であるかを把握できます。また、ログイン応答がIdPから送信されたことを確認するためのデジタル証明書も含まれています。

一般的なSAMLログインは、次のように行います。

1. DomoインスタンスのURLに移動します。
2. **［サインイン］** を選択します。

   DomoがユーザーをSAML要求パケットとともにIdPにリダイレクトします。
3. IdPは、システムからDomoにログインする権限があるかどうかを認証します。

   権限がある場合は、IdPがSAML応答パケットとともにDomoにリダイレクトします。
4. DomoがSAML応答パケットを確認して、IdPからの正しい認証情報が含まれていることと、ユーザーがログインできることを確定します。

<Note>
  **注記：**

  * **［アイデンティティープロバイダーにスキップ］**
    がDomoのSSO設定で選択されている場合は、ログイン時に **［サインイン］** を選択する必要はありません。IdPのログインページに自動的にリダイレクトされます。
  * Domoまたはほかのサービスでユーザーが最近IdPにログインしている場合は、IdPによるユーザー名とパスワードの要求がスキップされ、ユーザーがそのままDomoにリダイレクトされることがあります。
  * 上述の両方が発生した場合は、1～5秒の遅延が発生することがありますが、ログインプロセス全体はバックグラウンドで実行されます。
</Note>

## 基本的なトラブルシューティング

次のセクションの高度なトラブルシューティングに進む前に、SAMLログインの失敗の一般的な原因を確認してください。

* ログイン時に **［サインイン］** ボタンが表示されない場合は、次の手順に従います。

  * インスタンスURLを正しく入力していることを確認します。間違ったURLを入力し、そのアドレスに実際のDomoインスタンスがない場合でも、通常のログインページに移動します。
  * DomoのSSO設定で **［混在モードログイン］** が有効になっているかどうかを確認します。有効になっていれば、製品は正しく機能しています。このオプションは、通常のインスタンスログインの通常のログインページを表示しますが、IdPシステムはSSOログインを開始できます。これは、SSOが有効な外部システムへのカードのエンベッドに最も一般的に使用され、通常のログインではSSOは不要です。

* ログイン時にエラーが発生し、そのエラーがDomoブランドのウェブページに表示される場合は、次のような原因が考えられます。

  * IdPによってユーザーが間違ったDomoログインURLにリダイレクトされた。
  * SAML応答でIdPによって送信されたデジタル証明書が、SAML応答の発信元を検証するためにDomoにアップロードされている証明書と一致しない。
  * メール属性がSAML応答で正しく定義されていない。
  * ユーザーのメール属性はSAML応答で正しく定義されているが、メールが既存のユーザーに割り当てられておらず、 **［招待された方のみDomoにアクセスできます］** がDomoのSSO設定で選択されている。このオプションが選択されているとき、ユーザーは手動で作成する必要があり、SSOを介したログイン時に自動生成されません。

* ログイン時にエラーが発生し、そのエラーがDomoブランドのウェブページに表示されない場合は、次のような原因が考えられます。
  * DomoのSSO設定のSAMLエンドポイントURLまたはエンティティーIDに誤りがある。
  * IdPが署名されたSAML要求を待機しているが、DomoのSSO設定の **［認証リクエストに署名］** オプションが有効になっていない。または、IdPに読み込まれたデジタル証明書が、設定が有効になっている場所の付近にあるDomoが提供する証明書と一致していない。
  * Domoを使用するためのIdP権限がない。通常、様々なユーザーに各種ツールへのアクセス権限を付与できるように、IdPシステムには権限システムが組み込まれています。Domoにログインしようとしているユーザーは、IdP設定でDomoを使用するためのアクセス権限を持っている必要があります。

* ログイン時にエラーが発生し、エラーに「SAML Error: SAML Assertion failed validation for subject=org.open.saml.saml2.core.impl.Subjectimpl@ *01234567*. SAML Assertion is not valid until timestamp」と表示されている場合、次のような原因が考えられます。

  * ADFSサーバーがDomoサーバーより先にあるため、SAMLが失敗している。

    <Frame>
      <img alt="SAML error.png" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000006uxMI.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=b61b83cc487ee37bfe10ccff6e3071a3" style={{width: 346.996, height: 326.996}} width="529" height="499" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000006uxMI.jpg" />
    </Frame>

## SAML要求のトラブルシューティング

<Note>
  **注記：** 次の手順は、Google Chromeウェブブラウザーの場合の手順です。
</Note>

### SAML要求を収集する

1. Google Chromeで新しいシークレットウィンドウを開きます。
2. メインウィンドウの任意の場所で右クリックして、 **［検証］** を選択します。

   Chromeで **［DevTools］** パネルが開きます。

   <Frame>
     <img alt="" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqP.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=e6639ad64994577d6cb90947491c98cc" width="194" height="246" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqP.jpg" />
   </Frame>
3. **［DevTools］** パネルで **［Network］** タブを選択し、 **［Preserve log］** チェックボックスを選択します。

   <Frame>
     <img alt="Chrome_Dev_Tools_Network_Tab.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqG.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=1a6bd462e96d2d7b34852c4f1fc2a073" width="1192" height="486" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqG.jpg" />
   </Frame>
4. **［DevTools］** パネルを含むタブを閉じずに、シークレットウィンドウでDomoインスタンスのURLに移動します。
5. **［サインイン］** を選択します。

   IdPのログインページにリダイレクトされ、DomoがSAML要求パケットをIdPに送信します。
6. SAML要求を取得するには、 **［Dev Tools］** パネルに移動し、 **［Network］** タブの **［Filter］** フィールドを見つけて、「SAML」と入力します。

   **［Filter］** フィールドの下にあるリストにネットワーク通信レコードが表示されます。

   <Frame>
     <img alt="Chrome_Dev_Tools_Network_Filter.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqM.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=2cc8ca2e27e85f20363633df7451a5ca" width="1195" height="207" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqM.jpg" />
   </Frame>
7. ネットワーク通信レコードを選択し、 **［Headers］** タブを選択します。

   <Frame>
     <img alt="Chrome_Developer_Tools_SAML_Headers.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqF.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=33871f7c8facef739a2cdd7d95dc400c" width="1172" height="425" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqF.jpg" />
   </Frame>
8. **［Response］** タブをクリックして、 **［Form Data］** セクションに移動します。このセクションの下にあるテキストブロックが、エンコード済みの形式のSAML要求です。

   <Note>
     **注記：** データのエンコードは、データを保護するためではなく、通信システムがデータを実行すべきコマンドと誤って解釈しないようにするために行われます。
   </Note>

### SAML要求をデコードする

<Warning>
  **重要：** SAML要求には機密データが含まれているため、オンラインのウェブサイトを使用してSAML要求をデコードしないでください。その代わりにコンピューターのChromeブラウザーを使用してSAML要求をデコードする場合は、次の手順に従います。
</Warning>

1. [前の手順](#CollectSAMLRequest) を完了した後、エンコード済みのSAML要求を **［Form Data］** セクションからコピーします。

2. **［DevTools］** パネルで **［Console］** タブを選択します。

3. **［Console］** タブに「atob(' *SAMLRequestValue* ')」と入力します。一重引用符を残したまま、 *SAMLRequestValue* をステップ1でコピーしたエンコード済みのSAML値に置き換えます。

   <Note>
     **注記：** SAML値に改行が含まれている場合は、ペースト後に削除します。
   </Note>

4. キーボードの **Enter** を押します。

ChromeがSAML要求を元のXMLフォーマットにデコードします。

### SAML要求を解釈する

XMLフォーマットのデコード済みSAML要求内の次の2つの項目を確認します。

* 次のようなエントリーを探します。

  ```
  <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">some_text</saml2:Issuer>
  ```

  「 *some\_text* 」の代わりに入力するテキストは、DomoのエンティティーID、つまりDomoがログインしようとしているアプリケーションであることをIdPに通知する識別子です。これはDomoのSSO設定の **［エンティティーID］** フィールドと同じ値です。通常はDomoインスタンスのURLですが、IdPによっては特別な識別子が必要になります。
* DomoのSSO設定で **［認証リクエストに署名］** が有効になっている場合は、次のようなエントリーを探します。

  ```
   <ds:X509Certificate>some_certificate</ds:X509Certificate>
  ```

  「 *some\_certificate* 」の代わりに入力するテキストは、ログイン要求がDomoから送信されたことをIdPが確認するのに役立つx.509デジタル証明書です。

### SAML要求のトラブルシューティング

SAML要求を収集、デコード、解釈した後で、次のトラブルシューティング手順を実行して問題を解決します。

* **エンティティーID** は、DomoのSSO設定でSAML要求に含めるように指定した値です。IdPは、この値を認識して、Domoがログインしようとしているシステムであることを確認できる必要があります。

  通常、IdPシステムでは、DomoはApp設定で指定されたエンティティーIDを使用するAppとして設定されています。IdPを確認し、エンティティーIDが2つのシステム間で一致することを確認します。システムでAppのエンティティーIDを探す方法が分からない場合は、IdPのサポートチームにお問い合わせください。
* **x.509デジタル証明書** は、Domoによって提供される値であり、待機すべきSAML要求内の値が分かるよう、Domo Appに接続する際にIdPのシステムにアップロードされます。証明書のコピーは、DomoのSSO設定の **［IdPが必要とする情報］** からダウンロードできます。

  SAML要求の証明書と、IdPシステムのDomo App用にアップロードされた証明書が一致することを確認します。証明書ファイルがある場合は、テキストエディターで開けば証明書を表示できます。

## SAML応答のトラブルシューティング

<Note>
  **注記：** 次の手順は、Google Chromeブラウザーの場合の手順です。
</Note>

### SAML応答を収集する

1. Google Chromeで新しいシークレットウィンドウを開き、DomoインスタンスのURLに移動します。

2. **［サインイン］** を選択します。

   IdPのログインページにリダイレクトされます。認証情報はまだ入力しないでください。

   <Note>
     **注記：** **［アイデンティティープロバイダーにスキップ］** がDomoのSSO設定で選択されている場合は、 IdPのログインページに自動的にリダイレクトされます。
   </Note>

3. メインウィンドウの任意の場所で右クリックして、 **［検証］** を選択します。

   Chromeで **［DevTools］** パネルが開きます。

   <Frame>
     <img alt="" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqP.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=e6639ad64994577d6cb90947491c98cc" width="194" height="246" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqP.jpg" />
   </Frame>

4. **［DevTools］** パネルで **［Network］** タブを選択し、 **［Preserve log］** チェックボックスを選択します。

   <Frame>
     <img alt="Chrome_Dev_Tools_Network_Tab.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqG.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=1a6bd462e96d2d7b34852c4f1fc2a073" width="1192" height="486" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqG.jpg" />
   </Frame>

5. **［DevTools］** パネルを含むタブを閉じずに、IdPの認証情報を入力し、Domoのエラーページが表示されるまで続行します。

   IdPがSAML応答パケットをDomoインスタンスに送信します。

6. SAML要求を取得するには、 **［Dev Tools］** パネルに移動し、 **［Network］** タブの **［Filter］** フィールドを見つけて、「SAML」と入力します。

   **［Filter］** フィールドの下にあるリストにネットワーク通信レコードが表示されます。

   <Frame>
     <img alt="Chrome_Dev_Tools_Network_Filter.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqM.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=2cc8ca2e27e85f20363633df7451a5ca" width="1195" height="207" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqM.jpg" />
   </Frame>

7. ネットワーク通信レコードを選択し、 **［Headers］** タブを選択します。

   <Frame>
     <img alt="Chrome_Developer_Tools_SAML_Headers__1_.jpg" src="https://mintcdn.com/domoinc-openapi-sync-dataflows/y73kYVYT02nhoBL7/images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqF.jpg?fit=max&auto=format&n=y73kYVYT02nhoBL7&q=85&s=33871f7c8facef739a2cdd7d95dc400c" width="1172" height="425" data-path="images/kb/ka05w00000129Se-00N5w00000Ri7BU-0EM5w000005vNqF.jpg" />
   </Frame>

8. **［Response］** タブで **［Form Data］** セクションに移動します。このセクションの下にあるテキストブロックが、エンコード済みの形式のSAML応答です。

### SAML応答をデコードする

<Warning>
  **重要：** SAML応答には機密データが含まれているため、オンラインのウェブサイトを使用してSAML応答をデコードしないでください。その代わりにコンピューターのChromeブラウザーを使用してSAML要求をデコードする場合は、次の手順に従います。
</Warning>

1. [前の手順](#CollectSAMLResponse) を完了した後、エンコード済みのSAML応答を **［Form Data］** セクションからコピーします。

2. **［DevTools］** パネルで **［Console］** タブを選択します。

3. **［Console］** タブに「atob(' *SAMLResponseValue* ')」と入力します。一重引用符を残したまま、 *SAMLResponseValue* をステップ1でコピーしたエンコード済みのSAML値に置き換えます。

   <Note>
     **注記：** SAML値に改行が含まれている場合は、ペースト後に削除します。
   </Note>

4. キーボードの **Enter** を押します。

ChromeがSAML応答を元のXMLフォーマットにデコードします。

### SAML応答を解釈する

XMLフォーマットのデコード済みSAML応答内の次の2つの項目を確認します。

* 次のようなエントリーを探します。

  ```
  <ds:X509Certificate>some_certificate</ds:X509Certificate>
  ```

  「 *some\_certificate* 」の代わりに入力するテキストは、ログイン要求がDomoから送信されたことをIdPが確認するのに役立つx.509デジタル証明書です。
* 次のようなエントリを探します。

  ```
   <saml2:Attribute Name="email"><saml2:AttributeValue>some_email</saml2:AttributeValue></saml2:Attribute>
  ```

  *some\_email* の代わりに入力するテキストは自分のメールアドレスです。Domoはこのメールアドレスを使ってログインしているユーザーを正確に識別します。 *`<saml2:Attribute>`* および *`<saml2:AttributeValue>`* タグには、上記の例よりも多くの情報を含めることができますが、 *Name="email"* が *\<saml2:Attribute>* タグ内にあることが重要です。

### SAML応答のトラブルシューティング

SAML応答を収集、デコード、解釈した後で、次のトラブルシューティング手順を実行して問題を解決します。

* **x.509デジタル証明書** は、IdPによって提供される値であり、待機すべきSAML応答内の値が分かるよう、DomoインスタンスのSSO設定にアップロードされます。IdP側にある証明書を取得する場所を確認する方法については、IdPのサポートチームにお問い合わせください。通常は、.pem、.cer、.certのいずれかのファイルになります。

  SAML応答の証明書と、DomoのSSO設定にアップロードされた証明書が一致することを確認します。

  この証明書は、SAML応答に含める必要があります。
* **ユーザーのメールアドレス** は、IdPのユーザーのプロフィールの値になります。IdPのSAML設定では、この属性をSAML応答に含めるように設定する必要があります。システムでの設定方法については、IdPのサポートチームにお問い合わせください。

  SAML応答のメールアドレスがDomoのメインのメールアドレスと一致することを確認します。

  このメール属性は、SAML応答に含める必要があります。

日本語
