注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

はじめに

OpenID Connect 1.0 (OIDC) ↗ プロトコルは、OAuth 2.0 プロトコル上に構築されたシンプルな属性レイヤーです。Foundry などのクライアントは、このプロトコルを使用してエンドユーザーの属性を確認し、基本的なユーザープロフィール情報を取得できます。

一部の OIDC プロバイダーは一般公開されており、誰でもアカウントを作成できます。公開プロバイダーの設定を誤ると、意図しないユーザーにエンロールメントへのアクセスを許可してしまう可能性があります。慎重に進めてください。

ネットワークエグレス

OIDC 認証およびメタデータの収集には、エグレス呼び出しが必要です。エグレスポリシーを選択するか、ネットワークエグレスポリシーを設定できます。

OIDC の概念

以下のセクションでは、Foundry で共通して使用される OIDC 認証の概念を説明します。

リダイレクト URL

リダイレクト URL は、OIDC プロバイダーに登録する必要があります。この URL により、プロバイダーは認可リクエストの結果を Foundry に返すことができます。プロバイダーは、エンドユーザーに送信する認可リクエストにリダイレクト URL を含め、認可中にエンドユーザーがこの URL にリダイレクトされます。その後、Foundry がプロバイダーからのレスポンスを処理できます。

ログアウト URL

Foundry は、フロントチャネルとバックチャネルの URL を提供します。OIDC プロバイダーに登録するログアウト URL は、求めるログアウト動作によって異なります。

OIDC 統合メタデータ

OIDC 統合メタデータは、Foundry に渡される IDプロバイダーの情報です。メタデータ検出 URI を指定すると、Foundry は必要なメタデータフィールドを自動的に取得できます。

必要なメタデータを手動で指定することもできます。この情報には、以下が含まれます。

  • 発行者: OIDC プロバイダーの URL で、プロバイダーとその場所を識別します。Foundry はこの URL を使用して OIDC 検出ドキュメントを見つけます。このドキュメントでは、プロバイダーの OIDC エンドポイント、クレーム、対応するスコープ、公開鍵などを指定できます。
  • 権限付与エンドポイント: プロバイダーの認可エンドポイントで、認可コードを取得するためにエンドユーザーをリダイレクトする際に使用します。
  • トークンエンドポイント: プロバイダーのトークンエンドポイントで、認可コードをアクセストークンおよび ID トークンと交換する際に使用します。
  • JWKS URI: プロバイダーの JSON Web Key Set (JWKS) ドキュメントの URL で、ID トークンの署名を検証するための公開鍵が含まれています。
  • ユーザー情報エンドポイント(該当する場合):プロバイダーのユーザー情報エンドポイントで、エンドユーザーのプロフィール情報を取得する際に使用します。すべてのプロバイダーがこのエンドポイントに対応しているわけではなく、対応しているプロバイダーの一部では必須です。
  • セッション終了エンドポイント(任意):プロバイダーのセッション終了エンドポイントで、エンドユーザーをプロバイダーのセッションからログアウトさせる際に使用します。このエンドポイントは任意であり、一部のプロバイダーでは利用できない場合があります。

クライアント資格情報

クライアント資格情報とは、OIDC プロバイダーが Foundry に発行するクライアントIDとクライアントシークレットを指します。Foundry はこれらの資格情報を使用してプロバイダーに対して認証を行い、エンドユーザーのリソースへのアクセスを取得します。

これらの資格情報の取得方法はプロバイダーによって異なるため、プロバイダーのドキュメントを確認してください。

認証方法

Foundry がトークンエンドポイントへのリクエストを認証する方法を選択します。選択肢は以下のとおりです。

  • HTTP 基本認証方式。
  • POST:リクエストにフォームの値として資格情報を含めます。

スコープ

OIDC スコープは、ID トークンおよびユーザー情報レスポンスに含まれる情報を決定します。各スコープはユーザー属性(クレーム)を返します。

openid、email、profile のスコープを含める必要があります。

メールドメインの照合

メールドメインは、ログインの選択肢としてユーザーに表示する IDプロバイダー統合を決定するために使用されます。ユーザーがログイン画面でメールアドレスまたはユーザー名を入力すると、Foundry は設定済みのすべての IDプロバイダーのメールドメインを確認し、表示する IDプロバイダー統合を決定します。設定済みの IDプロバイダー統合のうち、ユーザーのメールドメインと一致するものだけが表示されます。

メールドメインには正規表現を使用できますが、通常は @example.com のようなシンプルな形式を使用します。この形式は自動的に .*@example\.com に変換されます。IDプロバイダー統合をすべてのユーザーに表示する場合は、.* を使用します。

認証プロバイダーに関連付けるメールドメインを定義できる「メールドメインの照合」ウィンドウ。「メールドメインを制限」オプションが選択され、シンプルな形式と正規表現の両方で、いくつかのドメイン例が許可されています。

シンプルな形式のメールドメイン(@example.com)と正規表現(.*@example\.com)は、どちらもデフォルトで大文字と小文字を区別します。正規表現の先頭に (?i) を追加すると、メールドメインの大文字と小文字を区別しないようにできます。そのため、シンプルな形式の @example.com で大文字と小文字を区別しないバージョンは、(?i).*@example\.com または (?i)@example\.com となります。

対応ホスト

対応ホストは、これらのホストを使用してログインするユーザーにのみ認証プロバイダーが表示されるようにするために使用されます。

エンロールメントに設定されているホストから選択できます。

属性マッピング

IDプロバイダーで定義されている属性を、Foundry での表現にマッピングします。

ユーザー属性

「クレーム」とも呼ばれるユーザー属性には、名前、メール、その他の利用可能な追加情報などのフィールドが含まれます。これらの属性は、属性キーから値へのマップとして送信されます。値は1個の場合も複数の場合もあり、たとえば email → user@example.com のようになります。

Foundry でユーザー属性に正しい値を設定するには、「クレーム」とも呼ばれる IDプロバイダーの属性を、対応する Foundry の属性にマッピングする必要があります。Foundry では、以下のマッピングが必須です。

  • ID: デフォルトでは sub に設定されていますが、別の安定した識別子に変更できます。Foundry はこの値を使用して、ログインを既存のアカウントと照合します。この値は空であってはならず、OIDC アサーションに常に存在し、大文字と小文字の区別も含めて一貫した形式である必要があります。アカウントの存続期間を通じて変化せず、単一のユーザーを永続的かつ一意に識別する必要があります。メールアドレスやユーザー名など、変更される可能性のある値は使用しないでください。変更によってアカウントへのアクセスに支障が生じる可能性があります。Microsoft Entra ID の OIDC プロバイダーを設定する場合は、代わりにこの値を oid に設定してください。Entra は SCIM リクエストで sub の値を送信しないためです。
  • ユーザー名: デフォルトでは preferred_username に設定されています。別の人間が読みやすい属性に変更できます。
  • メール: デフォルトでは email に設定されています。メール属性にマッピングする必要があります。
  • 名前: デフォルトでは given_name に設定されています。名前属性にマッピングする必要があります。
  • 苗字: デフォルトでは family_name に設定されています。苗字属性にマッピングする必要があります。

属性の登録を追加を選択すると、マッピングを追加して Foundry にさらにユーザー属性を設定できます。左側の項目に Foundry での属性名を入力し、右側の項目に JSON Web Token (JWT) 内のクレームへのパスを入力します。

高度な用途向けに、プロバイダーが返す JWT 内のクレームへのパスを指定するための JSONPath 構文に対応しています。デフォルトでは、クレームの値は単一の文字列として抽出されます。値を個別に抽出するには、パスの末尾に [*] を追加します。例:groups では "[group1, group2]" が抽出される可能性がありますが、groups[*] では ["group1", "group2"] が抽出されます。

Foundry では、各マッピングに切り替えがあり、OIDC レスポンス内の属性に複数の値がある場合の動作を選択できます。選択肢は以下のとおりです。

  • 最初: 受信した最初の値を属性に設定します。
  • すべて: 受信したすべての値を属性に設定します。

IDプロバイダからユーザーグループをインポートというラベルのチェックボックスをオンにし、ユーザーグループに対応する JWT 内のクレームへの適切なパスを指定すると、ユーザーのプロバイダーグループをインポートできます。ユーザーがログインすると、設定された属性のすべての値がプロバイダーグループとして反映され、ユーザーがメンバーとして登録されます。このチェックボックスをオフにすると、ログイン時にプロバイダーグループのメンバーシップが最新の状態に更新されなくなります。オフのままにする場合は、対話的なログインを必要とせずにプロバイダーグループのメンバーシップを更新できるよう、SCIM を有効にすることを推奨します。

詳細設定

プロンプト(任意)

prompt パラメーターは、認証中に特定の操作を行うようユーザーにプロンプトを表示することを要求するために使用します。prompt パラメーターで指定できる値は次のとおりです。

  • none: 認証にユーザーによる追加入力は必要ありません。
  • login: 認証を行うために資格情報を入力するプロンプトがユーザーに表示されます。
  • consent: 認証を完了するために同意するプロンプトがユーザーに表示されます。
  • select_account: 認証に使用するアカウントを選択するプロンプトがユーザーに表示されます。通常、同じプロバイダーで複数のアカウントを持つユーザーに使用します。

複数のプロンプトを選択できます。プロンプトを選択しない場合のデフォルトの動作は、プロバイダーによって異なります。

非同期ユーザーマネージャー

非同期ユーザーマネージャー (AUM) は、ログインフローに追加できる設定可能なステップです。利用可能な AUM を表示するには、非同期ユーザーマネージャー(AUM) を展開します。

Checkpoint ログイン

ログイン Checkpoint を作成すると、ログイン時にユーザーは設定可能なプロンプトにリダイレクトされ、ログインを続行する前に理由の入力を求められます。ログイン Checkpoint を有効にするには、まず Checkpoint ログイン AUM をオンにしてから、Checkpoint を作成する手順に従います。