Skip to main content
Auth0 では、ロールベースのアクセス制御 (RBAC) を実装する方法が 2 つ用意されており、API 独自の内部アクセス制御システムの代わりに、またはそれと組み合わせて使用できます。Authorization Core feature set は Authorization Extension と同等の機能を備えつつ、パフォーマンスとスケーラビリティを向上させ、Authorization Extension より柔軟な RBAC システムを提供します。現在、どちらも RBAC の主要な機能を実装しており、API 用に定義されたカスタムスコープを、ユーザーに権限として割り当てられているものだけに制限できます。
Auth0 ルールを Authorization Extension と組み合わせると、次のようなことができます。
  • 発行されたトークンにカスタムクレームを追加する。
  • ユーザーのグループメンバーシップ、ロール、権限を判別する。
  • ユーザーのグループ、ロール、権限の情報を app_metadata の一部として保存する。
  • ユーザーのグループ、ロール、権限を送信されるトークンに追加する (これらは openid groups permissions roles スコープで要求できます) 。
上記のロジックはルールの一部であるため、ログインのコンテキストでのみ実行されます。ユーザーがグループに追加またはグループから削除された場合、この変更が Auth0 に反映されるのは、ユーザーが次回ログインした後になります。 詳しくは、Auth0 ルール をご覧ください。

発行されたトークンにカスタムクレームを追加する

トークンにカスタムクレームを追加するには、Authorization Extension が追加できるようにするルールを別途作成します。カスタムクレームは、名前空間付きにすることも、非名前空間にすることもできます。 詳しくは、Create Custom Claims. をご覧ください。 トークンに追加するクレームの数は、必要最小限に抑えるようにしてください。
このルールは、Authorization Extension のルールのに実行される必要があります。確実にその順序になるよう、このルールは Authorization Extension のルールより下に配置してください。 /authorize エンドポイントを呼び出す場合や Lock を設定する場合は、scope に含める情報として groupspermissions、および/または roles を指定する必要があります。

アプリケーションへのアクセスを制御する

Authorization Extension ルールの後で実行されるルールを作成して、アプリケーションへのアクセスを制御することもできます。その方法の 1 つは、アプリケーション メタデータを使用して、各アプリケーションに必要なロールを指定することです。 詳しくは、ルールでメタデータを管理するを参照してください。

アプリのメタデータに必須ロールを設定する

アプリのメタデータにロールを設定できます。ロールとは、特定の機能セットを実現するためにまとめた権限のグループです。この手順は、設定したルールがどのアプリに対して動作すべきかを識別できるように、アプリに「タグ付け」するものと考えてください。
  1. ⁠⁠⁠⁠required_roles を指定して context.clientMetadata フィールドを設定するには、Auth0 Dashboard > アプリケーション > アプリケーション で対象のアプリケーションを選択します。 すると、そのアプリケーションの 設定 が表示されます。下にスクロールし、ページ下部の 高度な設定を表示 を選択します。
  2. アプリケーションのメタデータ で項目を追加し、キーrequired_roles を設定します。 フィールドには、ロールをカンマ区切りで入力します。フィールドを追加するには + 追加 を選択します。
  3. 完了したら、変更を保存 を選択します。これで、このアプリケーションからログインすると、context.clientMetadata に、入力したロール値の文字列を持つ required_roles が含まれるようになります。

アプリのロールを強制するルールを作成する

これで各アプリに関連付けられたロールが設定されたので、このアプリ情報をコンテキストとして使って実行されるルールを作成できます。
  1. このルールを作成する前に、Token ContentsRoles を有効にし、Authorization Extension ルールを公開します。
  2. このルールを追加し、生成された “auth0-authorization-extension” ルールの後に配置されていることを確認します。
  3. required_roles を設定したら、次の内容で新しいルールを作成します。

詳細はこちら