> ## 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.

# OIDC アプリケーション

> Iru Identity で OIDC アプリケーションを設定します：クライアント資格情報とローテーション、リダイレクト URI、スコープ、クレームマッピング、署名キー、セッションの長さ。

**OIDC アプリケーション**を使用すると、Iru が ID プロバイダーとして機能し、ユーザーは OpenID
Connect をサポートするサービスにサインインできます。Iru はサービスに**クライアント ID** と
**クライアントシークレット**を発行し、サインオン後に **ID トークン**を送信し、ユーザーのプロファイル
属性をそのトークンの**クレーム**にマッピングします。

これらのセクションを使用して、カスタム OIDC アプリ、または
[テンプレートから切り離した](/ja/identity/applications/application-templates)アプリを設定します。
設定は**ドラフト**で編集し、現在のバージョンとして設定します。バージョンモデルについては
[アプリケーションの概要](/ja/identity/applications/applications-overview)を参照してください。

## ステップ 1：クライアント資格情報を保存する

OIDC アプリを作成すると、Iru は**クライアント ID** と**クライアントシークレット**を生成します。
シークレットは**一度だけ**表示されるため、ダイアログを閉じる前に両方を安全な場所にコピーしてください。

<Warning>
  クライアントシークレットは作成後に再表示されません。紛失した場合は、シークレットをローテーションして
  新しいシークレットを生成してください。
</Warning>

アプリの **Protocol details** には、サービスが Iru と通信するために必要なエンドポイントも表示されます。

| 詳細 | 説明 |
| - | - |
| **Client ID** | アプリの公開識別子。 |
| **Well-Known URL** | OpenID ディスカバリードキュメント。多くのサービスはこの 1 つの URL からすべてを設定します。 |
| **Token Endpoint** | サービスが認可コードをトークンと交換する場所。 |
| **User Info Endpoint** | サービスがサインインしたユーザーのプロファイルクレームを読み取る場所。 |

## ステップ 2：リダイレクト URI を設定する

アプリの**ドラフト**の OIDC 設定で、Iru がリダイレクトを許可される URI を追加します。

<Steps>
  <Step title="許可されたサインインリダイレクト URI">
    サインオンが成功した後に Iru がユーザーを戻す場所。サービスが使用するすべての URL を追加します。
  </Step>

  <Step title="許可されたサインアウトリダイレクト URI">
    サインアウト後に Iru がユーザーを戻す場所。
  </Step>
</Steps>

<Note>
  リダイレクト URI は完全に一致する必要があります。リダイレクト URI でワイルドカードを許可する
  オプションがありますが、完全一致の方が安全なため、サービスで特に必要な場合を除きオフにしておいてください。
</Note>

## ステップ 3：スコープを選択する

**スコープ**は、サービスが要求できるクレームのカテゴリを制御します。Iru は標準の OpenID Connect
スコープを提供しています。

| スコープ | アクセスを許可する内容 |
| - | - |
| **OpenID**（`openid`） | OpenID Connect に必須。常に含まれます。 |
| **Profile**（`profile`） | 基本的なプロファイルクレーム。 |
| **メール**（`email`） | ユーザーのメールアドレス。 |
| **Address**（`address`） | ユーザーの住所。 |
| **Phone**（`phone`） | ユーザーの電話番号。 |
| **Offline access**（`offline_access`） | 再プロンプトなしでサービスがサインイン状態を維持できるようにするリフレッシュトークン。 |

<Tip>
  `openid` は常に存在し、削除できません。サービスが本当に必要とする追加のスコープのみを有効にしてください。
</Tip>

## ステップ 4：サブジェクトとクレームをマッピングする

アプリケーションの**マッピング**を開きます。マッピングには **件名** と追加の**クレーム**があります。

### サブジェクト

サブジェクトは、サインインしたユーザーの主要な識別子であり、`sub` クレームとして送信されます。
OIDC アプリの場合、デフォルトのサブジェクトはユーザーの `user.id` からマッピングされます。
取得元の値を変更し、スコープに関連付けることができます。

### クレーム

サービスが ID トークンに想定する追加のクレームを追加します。それぞれについて次を設定します。

* **Name：** クレーム名。
* **値：** 取得元のプロファイル属性または式。
* **スコープ：** クレームが属するスコープ。
* **有効**かどうか。

ライブ**プレビュー**に生成されるトークンが表示されるため、公開前にクレームを確認できます。

<Warning>
  一部のクレーム名は OpenID Connect 標準で予約されており、カスタムクレームとして使用できません：
  `iss`、`aud`、`exp`、`nbf`、`iat`、`jti`。
</Warning>

## ステップ 5：クライアントシークレットをローテーションする

クライアントシークレットは、アプリを再作成することなく、アプリの
**Protocol details → Client secrets** からローテーションできます。

<AccordionGroup>
  <Accordion title="ローテーション" icon="rotate">
    **Rotate** を実行すると新しいクライアントシークレットが発行され、以前のシークレットは
    **24 時間**引き続き機能するため、古いシークレットが停止する前にサービスを更新できます。
    その期間中、以前のシークレットには **Expires Soon** バッジが表示されます。新しく発行された
    シークレットは長期間有効です。
  </Accordion>

  <Accordion title="無効化" icon="ban">
    **Invalidate** を実行すると、猶予期間なしに現在のシークレットが直ちに終了します。
    シークレットが漏洩した可能性がある場合に使用し、すぐにサービスを更新してください。
  </Accordion>
</AccordionGroup>

<Note>
  Iru は ID トークンの署名に使用する署名キーを管理し、ディスカバリーおよびキーのエンドポイントで
  公開しているため、サービスはトークンを自動的に検証します。手動でローテーションする必要はありません。
</Note>

## ステップ 6：公開、割り当て、有効化

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

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

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

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

## 認証フロー

OIDC アプリは**認可コードフロー**でユーザーをサインインさせます。

<Steps>
  <Step title="Iru にリダイレクトする">
    アプリはユーザーをサインインのために Iru に送ります。
  </Step>

  <Step title="認証してポリシーを評価する">
    Iru はユーザーを認証し、アプリの[認証ポリシー](/ja/identity/authentication/authentication-policies)を評価します。
  </Step>

  <Step title="認可コードを返す">
    Iru は短期間有効な認可**コード**とともに、アプリの**リダイレクト URI** にリダイレクトします。
  </Step>

  <Step title="コードをトークンと交換する">
    アプリは Iru の**トークンエンドポイント**でコードを **ID トークン**（ユーザーが誰であるか）と
    **アクセストークン**に交換します。
  </Step>

  <Step title="クレームを読み取る（およびサインイン状態を維持する）">
    アプリはアクセストークンを使用して**ユーザー情報エンドポイント**を呼び出してプロファイルクレームを
    読み取ることができ、（`offline_access` を有効にした場合）**リフレッシュトークン**を使用して
    サインイン状態を維持できます。
  </Step>
</Steps>

ほとんどのライブラリは、**Protocol details** の **Well-Known URL** からこのフロー全体を設定します。

## 次のステップ

<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="認証ポリシー" icon="shield-halved" href="/ja/identity/authentication/authentication-policies">
    サインインできるユーザーと、証明する必要がある内容を決定します。
  </Card>

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