> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SAML アプリケーション

> Iru Identity の SAML アプリケーション設定のリファレンス：プロバイダーの詳細、リクエストとレスポンスの処理、署名、属性マッピング、セッションの長さ。

**SAML アプリケーション**を使用すると、Iru が \*\*ID プロバイダー（IdP）\*\*として機能し、ユーザーは
SAML シングルサインオンをサポートするサービスにサインインできます。Iru はサービスが必要とする
プロバイダー向けの詳細を提供し、送信するレスポンスとアサーションに署名し、ユーザーのプロファイル属性を
そのアサーションにマッピングします。

SAML アプリの設定は**ドラフト**で編集し、現在のバージョンとして設定します。バージョンモデルについては
[アプリケーションの概要](/ja/identity/applications/applications-overview)を参照してください。
以下は、エディタでの表示と同じグループ分けによる、すべての設定のフィールドごとのリファレンスです。

<Note>
  ほとんどのサービスで必要な設定はごく一部で、通常は ACS URL、Service Provider Entity ID、
  マッピングです。デフォルトは一般的なサービスプロバイダーで機能するように選択されています。
  その他の設定は、サービスのドキュメントで指示されている場合にのみ変更してください。
</Note>

## プロトコルの詳細：Iru がサービスプロバイダーに提供するもの

アプリケーションの **Protocol details** を開き、サービスプロバイダーが Iru を信頼するために必要な値を
コピーします。これらは Iru によって生成されます。

| 詳細 | 説明 |
| - | - |
| **Metadata URL** | このアプリの Iru の SAML 設定を記述した単一のドキュメント。多くのサービスはこの URL からすべてを設定します。メタデータファイルを表示またはダウンロードすることもできます。 |
| **IdP Entity ID** | このアプリの ID プロバイダーとしての Iru の識別子。 |
| **Single Sign On Service** | サービスプロバイダーが認証リクエストを送信する URL（および IdP 起点のサインオンが開始される場所）。 |
| **IdP Signing Certificate** | レスポンスが本当に Iru から送られたものであることをサービスが検証するために使用する証明書。サブジェクト、有効期限、フィンガープリントが表示され、コピーまたはダウンロードできます。 |

<Tip>
  サービスがメタデータをインポートできる場合は、**Metadata URL** を指定してください（またはダウンロードした
  ファイルをアップロードします）。エンティティ ID、サインオン URL、署名証明書がまとめて含まれているため、
  手入力が少なくなります。
</Tip>

## プロバイダーの詳細：サービスについて Iru に伝える内容

| 設定 | 動作 |
| - | - |
| **ACS URL** | Assertion Consumer Service URL。Iru が SAML レスポンスを送信する宛先です。必須で、有効な `https` URL である必要があります。 |
| **Service Provider Entity ID** | サービスプロバイダー自身の識別子。Iru はこれをデフォルトのオーディエンスとして、また（オプションで）リクエストの発行者の検証に使用します。 |
| **Unsolicited authentication** | サービスが **IdP 起点**のサインオン（ユーザーが Iru から開始）をサポートしているかどうか。サービスが要求していないレスポンスを受け入れる場合は **Supported** に、それ以外の場合は **Unsupported** に設定します。 |
| **Alternative authentication URL** | Unsolicited authentication が **Unsupported** の場合に表示されます。サービス自身がサインインを開始できるよう（サービスプロバイダー起点）、Iru がユーザーを送る URL です。 |

<AccordionGroup>
  <Accordion title="リクエスト：Iru が認証リクエストを処理する方法" icon="inbox">
    これらの設定は、サービスプロバイダーがサインオンを開始するために送信する **AuthnRequest** を制御します。

    ### 発行者の検証

    Iru が受信リクエストの **Issuer** をどの程度厳密にチェックするか。

    | オプション | 動作 |
    | - | - |
    | **Must match Service Provider Entity ID** | リクエストの発行者は、上記で入力した Service Provider Entity ID と一致する必要があります。 |
    | **Must match custom value** | 発行者は、指定した **Custom value** と一致する必要があります（サービスの発行者がエンティティ ID と異なる場合に使用します）。 |
    | **Ignore** | 発行者を検証しません。 |

    ### 認証リクエストの制限

    **リクエストに署名が必要かどうか**と、Iru が応答する **ACS URL** を制御します。
    「Follow」はリクエストの ACS URL を使用し、「pinned」は常に **Provider details** で設定した
    ACS URL を使用します。

    | オプション | リクエストに署名が必要か | レスポンスの送信先 |
    | - | - | - |
    | **Any request and follow** | いいえ | リクエスト内の ACS URL |
    | **Any request and pinned** | いいえ | 設定された ACS URL |
    | **Signed request and follow** | はい | リクエスト内の ACS URL |
    | **Signed request and pinned** | はい | 設定された ACS URL |

    <Warning>
      **Pinned** の方が安全な選択肢です。リクエストで指定された ACS URL を無視するため、
      改ざんされたリクエストによってレスポンスが別の場所にリダイレクトされることはありません。
      サービスがリクエストへの署名をサポートしている場合は、**Signed request and pinned** を推奨します。
    </Warning>

    **Signed request** オプションを選択した場合は、Iru がその署名を検証する方法も設定します。

    | 設定 | 動作 |
    | - | - |
    | **Allowed signing algorithms** | Iru が受け入れるリクエスト署名アルゴリズム：`RSA-SHA1`、`RSA-SHA256`、`RSA-SHA384`、`RSA-SHA512` のいずれか。サービスが使用するものを選択してください。必要な場合を除き `RSA-SHA1` は避けてください。 |
    | **Allowed digest algorithms** | Iru が受け入れるリクエストダイジェストアルゴリズム：`SHA1`、`SHA256`、`SHA384`、`SHA512` のいずれか。 |
    | **Signing Certificate** | Iru がサービスの署名済みリクエストを検証するために使用する証明書。サービスプロバイダーのリクエスト署名証明書をアップロードします。 |
  </Accordion>

  <Accordion title="レスポンス：Iru がアサーションを構築して送信する方法" icon="paper-plane">
    ### 配信と識別子

    | 設定 | 動作 |
    | - | - |
    | **HTTP Method** | SAML レスポンスの配信方法：**HTTP-POST**（自動送信フォーム、一般的な選択肢）または **HTTP-REDIRECT**。 |
    | **IdP Entity ID** | Iru がレスポンスで宣言する発行者。**Use default**（Protocol details に表示）のままにするか、**Specify custom** を選択して別の **Custom IdP Entity ID** を宣言します。 |
    | **Audience** | アサーションの対象。**Use default** は Service Provider Entity ID を送信します。別の **Custom Audience** を送信するには **Specify custom** を選択します。 |
    | **Recipient** | アサーションで宣言される受信者。**Use default** は ACS URL（宛先）を使用します。別の **Custom Recipient** を送信するには **Specify custom** を選択します。 |
    | **Fallback relay value** | サービスが RelayState を指定しなかった場合に Iru が使用する RelayState。通常は、ユーザーがアプリ内で移動すべき場所です。 |
    | **Error action** | サインオンを完了できない場合の動作：**Iru** は Iru のエラーページを表示し、**Protocol** はエラーをサービスプロバイダーに返して処理させます。 |

    ### 署名

    | 設定 | 動作 |
    | - | - |
    | **Signing method** | Iru が署名するメッセージの部分：**Response**、**Assertion**、または **Both - Response and Assertion**。サービスの要件に合わせてください。 |
    | **Signing algorithm** | Iru が署名に使用する署名アルゴリズム：`RSA-SHA1`、`RSA-SHA256`、`RSA-SHA384`、または `RSA-SHA512`。ほとんどのサービスには `RSA-SHA256` が適しています。 |
    | **Digest algorithm** | 署名で使用されるダイジェストアルゴリズム：`SHA1`、`SHA256`、`SHA384`、または `SHA512`。 |

    Iru は独自の **IdP Signing Certificate**（Protocol details に表示されるもの）で署名するため、
    ここでアップロードする署名証明書はありません。

    ### アサーションの暗号化

    | 設定 | 動作 |
    | - | - |
    | **Encrypt assertions** | **Unencrypted**（デフォルト）または **Encrypted**。サービスが暗号化されたアサーションを必要とする場合にのみオンにします。 |
    | **Use the Request signing certificate** | 暗号化時に、別の証明書をアップロードする代わりに、サービスのリクエスト署名証明書を暗号化証明書として再利用します。（**Request** セクションで署名証明書が設定されている必要があります。） |
    | **Encryption Certificate** | リクエスト署名証明書を再利用しない場合に、Iru がアサーションを暗号化する対象となるサービスプロバイダーの証明書。 |
    | **Encryption algorithm** | コンテンツ暗号化アルゴリズム：`AES-128-GCM`、`AES-192-GCM`、`AES-256-GCM`、`AES-128-CBC`、`AES-192-CBC`、または `AES-256-CBC`。サービスが想定するものを使用してください（GCM のオプションが適切なデフォルトです）。 |
    | **Key transport algorithm** | 暗号化キーの保護方法：`RSA-OAEP` または `RSA-PKCS1-v1.5`。 |

    ### 詳細設定

    | 設定 | 動作 |
    | - | - |
    | **Use namespace prefixes** | レスポンスに明示的な XML 名前空間プレフィックス（`saml2p`、`saml2`、`ds`、`xenc`）を追加します。サービスの SAML パーサーがプレフィックス付きの要素を必要とする場合に有効にします。 |
  </Accordion>

  <Accordion title="マッピング：Iru が送信する NameID と属性" icon="table-list">
    アプリケーションの**マッピング**を開いて、アサーション内の ID を制御します。マッピングは
    **件名**（NameID）と追加の**属性**の 2 つの部分で構成されます。

    ### Subject（NameID）

    Subject はサインインしたユーザーの主要な識別子です。デフォルトではユーザーの `user.username` から
    取得されます。取得元の値を変更し、**NameID 形式**を選択できます。

    | NameID 形式 | サービスが次を想定する場合に使用 |
    | - | - |
    | **メール** | 識別子としてのメールアドレス。 |
    | **Persistent** | セッションをまたいで変わらない、安定した不透明な識別子。 |
    | **Transient** | セッションごとに変わる可能性のある一時的な識別子。 |
    | **Unspecified** | 特定の形式なし。 |

    ### 属性

    サービスがアサーションで必要とする各属性を追加します。各属性について次を設定します。

    * **Name：** サービスプロバイダーが想定する属性名。
    * **値：** 取得元のプロファイル属性または式（例：`user.email` やフィールドの組み合わせ）。
    * **属性名の形式：** **Unspecified**、**URI**、または **Basic**。
    * **有効**かどうか。

    ライブ**プレビュー**に生成されるアサーションが表示されるため、公開前にその形式を確認できます。

    <Warning>
      `Subject` は NameID として予約されており、カスタム属性名として再利用することはできません。
    </Warning>
  </Accordion>

  <Accordion title="セッション管理" icon="clock">
    SAML アプリのアサーションまたは OIDC トークンのデフォルトのセッションの長さは **60 分**です。
    一致するロールのセッションの長さがその値を上書きします。ロールでセッションの長さを **0** に設定すると、
    代わりにアプリケーションのデフォルトが使用されます。
    [ロールとロールバンドル](/ja/identity/applications/roles-and-bundles)を参照してください。

    | 設定 | 動作 |
    | - | - |
    | **Session Length Supported** | **Supported** は、以下の長さからアサーションの `notOnOrAfter`（セッションの有効期限）を設定します。**Unsupported** は省略します。 |
    | **Default session length (minutes)** | アサーションに書き込まれるアプリケーションのデフォルト。デフォルトは **60** です。アプリでは **10** ～ **2880** 分が有効です。 |
  </Accordion>
</AccordionGroup>

## 証明書の概要

SAML アプリには最大 3 つの証明書が関係します。

<AccordionGroup>
  <Accordion title="IdP 署名証明書（Iru 独自のもの）" icon="stamp">
    Iru は、**Protocol details** に表示される独自の証明書でレスポンスやアサーションに署名します。
    サービスはこれを使用して、メッセージが Iru から送られ、改ざんされていないことを確認します。
    アップロードするものはありません。
  </Accordion>

  <Accordion title="リクエスト署名証明書（サービスのもの）" icon="signature">
    サービスプロバイダーの証明書をアップロードして、サービスが送信する**署名済みの認証リクエスト**を
    Iru が検証できるようにします。**Request** セクションで設定し、署名済みリクエストを必須とする場合にのみ必要です。
  </Accordion>

  <Accordion title="暗号化証明書（サービスのもの）" icon="lock">
    Iru が**アサーションを暗号化**する対象となるサービスプロバイダーの証明書で、**Encrypt assertions** が
    オンの場合にのみ使用されます。別の証明書をアップロードする代わりに、リクエスト署名証明書を再利用できます。
  </Accordion>
</AccordionGroup>

## 公開、割り当て、有効化

<Steps>
  <Step title="ドラフトを現在のバージョンとして設定する">
    ドラフトを公開して、ライブの設定にします。
  </Step>

  <Step title="アクセスを割り当てる">
    アプリを使用するグループを割り当てます。
    [アクセスの割り当て](/ja/identity/applications/assigning-access)を参照してください。
  </Step>

  <Step title="有効化する">
    割り当てられたユーザーがサインインできるよう、アプリをアクティブにします。
  </Step>

  <Step title="サインオンをテストする">
    アプリダッシュボードからテストユーザーとしてサインインしてエクスペリエンスを確認し、
    マッピングの**プレビュー**を使用してアサーションを確認します。
  </Step>
</Steps>

## 次のステップ

<CardGroup cols={2}>
  <Card title="アクセスの割り当て" icon="user-check" href="/ja/identity/applications/assigning-access">
    ユーザーとグループにアプリへのアクセスを付与し、アプリのロールを形成します。
  </Card>

  <Card title="プロビジョニング" icon="arrows-rotate" href="/ja/identity/applications/provisioning">
    アクセスの変更に応じて、アプリのアカウントを自動的に作成および削除します。
  </Card>

  <Card title="OIDC アプリケーション" icon="id-card" href="/ja/identity/applications/oidc-applications">
    SAML の代わりに OpenID Connect を使用するアプリを設定します。
  </Card>

  <Card title="アプリケーションの概要" icon="grip" href="/ja/identity/applications/applications-overview">
    プロトコルと、ドラフトから現在へのバージョンモデルを確認します。
  </Card>
</CardGroup>
