組織
サポートする各組織ごとに、独立した Auth0 Organization を作成する必要があります。この例では、Hoekstra & Associates を表すhoekstra 組織と、MetaHexa Bank を表す metahexa 組織を作成します。組織は、組織を作成する を で手動作成することも、Auth0 の を使ってプログラムから作成することもできます。
アプリケーション
Organizationテナントの実装方法によっては、Auth0テナント内でアプリケーション定義を作成する際に、いくつかの選択肢があります。どの方法を選んでも、Organizationの動作はアプリケーション レベルで定義されます。 顧客ごとに個別のOrganizationテナントをプロビジョニングする場合は、通常、それぞれに対応する独立したアプリケーション定義をAuth0で作成する必要があります。この構成では通常、アプリケーション固有のclient_idパラメーターと、使用するAuth0 Organizationを識別するorganizationパラメーターの両方を、/authorizeエンドポイントの呼び出し時に送信することになります。詳しくは、Authenticationを参照してください。
ベストプラクティス設定を簡単にし、セキュリティ分離を最大限に高めるため、Auth0ではアプリケーションを個別に定義してください。これにより、許可するコールバックURLなどをそれぞれ個別に設定できるほか、最小権限の原則に従って、Client IDやClient Secretの情報が露出する可能性を最小限に抑えられます。
client_idを使用することになりますが、/authorizeエンドポイントの呼び出しではorganizationパラメーターは省略されます。
Connections
次に、ユーザーの認証に使用するConnectionsを定義します。ここでは、Hoekstra & Associates に関連するユーザー向けに データベース接続 を、MetaHexa Bank に関連するユーザー向けに エンタープライズ接続 を定義します。ベストプラクティス単一の Identity Provider (IdP) Organization では、さまざまなユースケースに柔軟に対応できるよう、定義した Organization ごとに 1 つの Connection を作成してください。たとえば、Organization ごとに 1 つの Database or Custom Database Connection を用意しておくと、廃止された Organization に関連するユーザーを簡単に削除できるほか、パスワードの複雑さに関する要件が異なる Organization にも最大限柔軟に対応できます。
Users
Database または Custom Database Connections 以外の Connections 経由で認証されるユーザーは、Auth0 とは独立して、通常どおり外部の (IdP) にプロビジョニングされます。一方、Database または Custom Database Connections 経由で認証されるユーザーは、いくつかの異なる方法でプロビジョニングできます。Auth0 Dashboard と Auth0 Management API を使用して、Auth0 Tenant にユーザーを直接作成できます。また、Automatic Migration と Bulk Migration もサポートしています。 その後、ユーザーはメンバーシップを割り当てることで Auth0 Organization に関連付けられます。また、Auth0 Organization は、ユーザーの メンバーシップ を自動的に割り当てる ようにすることも、手動で割り当てる ようにすることもできます。ユーザーに organization への メンバーシップ を手動で割り当てるには、そのユーザーの User Profile が Auth0 にすでに存在している必要があります。メンバーシップ を手動で割り当てる には、Auth0 Tenant Dashboard または Auth0 Management API のいずれかを使用できます。
招待
Auth0 Organization 機能では、メンバー招待も利用できます。メンバー招待のワークフローでは、ユーザーをアプリケーションに招待すると、そのユーザーは自動的にプロビジョニングされ、メンバーシップも自動的に作成されます。データベース接続
Hoekstra & Associates の例を使って、ユーザー招待の一部としてデータベース接続を使用する場合に、この実装がどのような流れになるかを見てみましょう。ここで説明するワークフローの大部分は通常、使用している技術スタックに対応する Auth0 SDK またはライブラリによって処理されます。
-
Hoekstra & Associates の Jennifer は、Hoekstra & Associates の Travel0 Corporate Booking インスタンスに代わって Travel0 の Auth0 テナントから送信されたメールを受信します。
- メールは、組織メンバーを招待するで説明されているとおりに送信されたもので、Auth0 Dashboard または Auth0 Management API を使用してトリガーされた可能性があります。
-
Jenniferはメールを開き、その中のリンクをクリックします。すると、ブラウザーはHoekstra & AssociatesのTravel0 Corporate Bookingインスタンスへ移動します。リンクで使用されるベースURLはApplication Login URIとして指定されており、これはTravel0 Auth0テナント内のHoekstra & AssociatesのTravel0 Corporate Bookingアプリケーション定義の一部です。
- リンクには
organizationとorganization_nameパラメーターが含まれています。organizationパラメーターには、Auth0テナント内の対応する Auth0 Organization 定義の ID が設定されています。これはステップ 3 の一部として Auth0テナントに渡されます。 - リンクには
invitationパラメーターも含まれており、これもステップ 3 の一部として渡されます。
- リンクには
-
Hoekstra & Associates の Travel0 Corporate Booking インスタンスは、
/authorizeエンドポイントを呼び出して以下のようなパラメータを渡すことで、認可コードフロー (PKCE の有無を問わず) を使用し、Travel0 Auth0テナントにリダイレクトします。通常、これは Auth0 SDK またはサードパーティ製ライブラリを使用して行われます。redirect_uri:https://hoekstra.corp.travel0.net/login/callbackresponse_type:codestate: このセッションで生成された一意のstatescope:openid profile…- ユーザーについて必要な情報に応じて、追加で必要なOIDC スコープ。
client_id: Hoekstra & Associates’ の Travel0 Corporate Booking インスタンス向けに、Travel0 Auth0 テナントで作成した Application に関連付けられた Client ID。organization: 招待元の組織の ID。通常はステップ 2 で説明したメール内のリンクから取得します。organization=organization_id の形式で指定します。ここで、organization_id には、Auth0 テナント内の対応する Auth0 Organization 定義に関連付けられた識別子を設定します。invitation: ステップ 2 で説明したとおり、メール内のリンクに関連付けられた追加のinvitationパラメーター。
-
Travel0 Auth0テナントは、ユーザーのパスワード認証情報を取得するために
/signup/invitationにリダイレクトします。- Branding で説明されているように、組織ごとのブランド要素を表示するように設定された Universal Login Page が表示されます。
- ユーザーはパスワード (およびユーザー名などの追加認証情報) を入力し、[続行] をクリックします。ユーザー ID にはそのユーザーに紐付けられたメールアドレスが設定されており、変更できません。
-
Travel0 Auth0テナントが認証情報を確認します。有効であれば、ユーザーがプロビジョニングされ、Auth0 Organization Membership が設定されます。ユーザーは暗黙的に認証され、Rules パイプラインが実行されます。Authorization で説明されているように、Rules はアクセス制御の処理に使用できます。
- ユーザーの認証情報が無効な場合は、再入力を求められます。
-
認証情報の確認と Rules の実行が正常に完了すると、ユーザーはステップ 3 で渡された
stateとcodeを伴って、redirect_uri(https://hoekstra.corp.travel0.net/login/callback) にリダイレクトされます。 -
Hoekstra & Associates の Travel0 Corporate Booking インスタンスは
stateを検証した後、https://auth.travel0.net/oauth/tokenの Travel0 Auth0 テナントを呼び出し、code、client id、およびclient secretを渡して ID Token を取得します。続いて、その ID トークンを使用してhttps://hoekstra.corp.travel0.netのセッションを生成します。 - Hoekstra & Associates の Travel0 Corporate Booking インスタンスは、ユーザーに適切なページを表示します。
エンタープライズ接続
MetaHexa Bank の例を使って、ユーザー招待の一部として Enterprise Connection を使用する場合に、この実装がどのように進むかを見ていきましょう。ここでも、説明するワークフローの大半は通常、利用している技術スタックに対応する Auth0 SDK またはライブラリによって処理されます。
-
MetaHexa Bank の Amintha は、MetaHexa Bank 向けの Travel0 Corporate Booking インスタンスの代理で、Travel0 の Auth0テナントから送信されたメールを受け取ります。
- このメールは Invite Organization Members で説明されている方法で送信されており、Auth0 Dashboard または Auth0 Management API のいずれかによってトリガーされた可能性があります。
-
Amintha はメールを開き、その中のリンクをクリックします。すると、ブラウザーは MetaHexa Bank 向けの Travel0 Corporate Booking インスタンスに移動します。リンクで使用されるベース URL は Application Login URI として指定されており、Travel0 の Auth0テナントにある MetaHexa Bank 向け Travel0 Corporate Booking アプリケーション定義の一部を構成します。
- リンクには
organizationおよびorganization_nameパラメーターが含まれます。organizationパラメーターには、Auth0テナント内の対応する Auth0 Organization 定義の ID が設定されています。これはステップ 3 の一部として Auth0テナントに転送されます。 - リンクには
invitationパラメーターも含まれており、これもステップ 3 の一部として転送されます。
- リンクには
-
MetaHexa Bank 向けの Travel0 Corporate Booking インスタンスは、通常 Auth0 SDK またはサードパーティのライブラリを使用して
/authorizeエンドポイントを呼び出し、次のようなパラメーターを渡すことで、Authorization Code Flow (PKCE あり/なし) を使って Travel0 の Auth0テナントにリダイレクトします。redirect_uri:https://metahexa.corp.travel0.net/login/callbackresponse_type:codestate: このセッションで生成された一意の statescope:openid profile…- ユーザーについて必要な情報に応じて、必要な追加の OIDC Scopes
client_id: MetaHexa Bank 向け Travel0 Corporate Booking インスタンス用に Travel0 の Auth0テナントで作成された アプリケーション に関連付けられた Client ID。organization: 通常はステップ 2 で説明したメール内のリンクから取得する、招待元 organization の ID。organization=organization_id の形式で指定し、organization_id には Auth0テナント内の対応する Auth0 Organization 定義に関連付けられた識別子を設定します。invitation: ステップ 2 で説明したとおり、メール内のリンクに関連付けられた追加のinvitationパラメーター。
-
Travel0 の Auth0テナントは
/invitationにリダイレクトし、そこで Amintha に、まず第 1 要素の認証情報を認証するため MetaHexa IdP にリダイレクトされることが通知されます。- ユーザーが確認すると、
- Auth0 は MetaHexa Bank の IdP インスタンスにリダイレクトし、
- ログインページが表示され、ユーザーは認証情報を入力して
loginをクリックします。
- 成功すると、Auth0 Organization メンバーシップ が設定され、ユーザーは暗黙的に認証され、Rules パイプラインが実行されます。Rules は、Authorization で説明されているように、アクセス制御の処理に使用できます。
metahexa.corp.travel0.net) が使用されます。