- IDトークンは一般的に、カスタムクレームを使って、ユーザーの認可情報をアプリケーションへ伝えるために使用されます。このカスタムクレームはルール拡張を使って追加することができます。追加されたクレームは、ユーザーの許可されていない操作を阻止するユーザーインターフェイスを表示できるようにします。また、IDトークンの認可情報は、ユーザーが従来型のWebアプリでフロントエンドの制御を迂回できないようにする方法をアプリケーションのバックエンドに提供します。
ベストプラクティスアクセス権限は、Auth0 Authorization Core機能経由でAuth0 Role-Based Access Control(RBAC)を使用して定義し、アクセストークンに自動的に適用することができます。詳細については、「APIのRole-Based Access Control(RBAC)を有効にする」を参照してください。Auth0のRBAC機能から提供された情報をIDトークンに(手動で適用する場合はアクセストークンにも)カスタムクレームとして追加することもできます。Auth0 Organizationsは、メンバーシップを通じて割り当てられたロールを介してAuth0 RBAC機能を活用することができます。詳細については、「Organazaionメンバーにロールを追加する」を参照してください。
- 共有リソースサービスへの公開アクセスを提供するAPIは通常、アクセス制御メカニズムによって保護されます。このため、Auth0には認可ベアラートークンまたは 2アクセストークンを作成する機能が備わっており、これでユーザー認可情報をAPIに伝えることができます。通常は、Auth0のRole-Based Access Control (RBAC)を使用して1つ以上のメンバーシップが割り当てられたロールを適用するか、ルール拡張を介してカスタムクレームを追加することで実行されます。Auth0のRBAC機能を活用して、アクセストークンの
スコープクレームを自動的に調整することもできます。APIはこの情報を使って適切なレベルのアクセス制御を適用し、ユーザーについての情報を追加で検索することなく、ポリシールールを適用できるようにします。 - Auth0テナントでアプリケーションレベルのポリシーを実装したい場合には、広範囲のアプリケーションやリソースサービス(API)にポリシーを適用できるようになります。個別に変更する必要はありません。これを実装するには通常、ルール拡張を使用します。
ベストプラクティスAuth0 Organizationsは、ユーザーの認証時にAuth0ルールが組織中心の情報にアクセスできるようにします。この情報には、ルールの
contextオブジェクトに含まれているorganizationオブジェクトを介してアクセスします。organizationオブジェクトは、Auth0のOrganization定義に照らし合わせてプロビジョニングされたメタデータへのアクセスも可能にします。詳細については、「Organizationのカスタム開発」を参照してください。IDトークンのクレーム
org_idクレームは組織メンバーシップを持つユーザーに発行された任意のIDトークン(例については、「トークンと組織を使用する」を参照)に自動的に追加されます。このパラメーターはAuth0 SDKが検証します。また、IDトークンにカスタムクレームを追加して、Auth0の組織に関連付けられた補足情報を追加することもできます。
org_nameクレームがIDトークンに自動的に含まれます。詳細については、「Authentication APIでOrganization名を使用する 」を参照してください。
SAMLアサーション
userオブジェクト内の値が割り当てられ、IDトークンの標準クレームにマッピングするか、カスタムクレームを使ってマッピングされます。SAMLマッピングをカスタマイズする方法の詳細については、「アプリをSAML IDプロバイダーに接続する:マッピングをセットアップする」を参照してください。
アクセストークンのクレーム
org_idクレームは組織メンバーシップを持つユーザーに発行された任意のアクセストークン(例については、「トークンと組織を使用する」を参照)に自動的に追加されます。また、アクセストークンにカスタムクレームを追加して、Auth0の組織に関連付けられた補足情報を追加することもできます。
org_nameクレームがアクセストークンに自動的に含まれます。詳細については、「Authentication APIでOrganization名を使用する 」を参照してください。
または、各組織に一意のAPIオーディエンスを作成することもできます。そうすると、APIの定義がAuth0で一意のものになります。この方法では、カスタムのルール拡張を取り入れる必要がなくなりますが、複雑性が伴うため、困難になるかもしれません。以下の表は簡単な比較をまとめたものです。
| 手法 | 長所 | 短所 |
|---|---|---|
| 一意のAPIオーディエンス |
|
|
| カスタムクレーム | Auth0テナントの構成を簡素化する | トークンにアクセスする組織を追加するには、ルール内にカスタムコードがなければならない |
Roles(ロール)
APIに対してAuth0 Authorization Core(認可コア)RBACを有効化すると、アクセストークンに含まれるデフォルトの
scopeクレームが自動的に変更され、permissionクレームがデフォルトで追加されます(例については「トークンとOrganizationでの作業」を参照してください)。また、ロール情報をカスタムクレームとしてIDトークンに追加することもできます。それには、ルールの contextオブジェクトにあるauthorizationオブジェクトにアクセスします。詳細については、「認可でのルールのサンプルユースケース:ユーザーのロールをトークンに追加する」を参照してください。アクセス制御
- 特定のIPアドレスからのユーザーアクセスを阻止する
- Contextual やに固有の要件を実装する
- メールアドレスが確認されたユーザーのみにログインを制限する
- 特定のAPIオーディエンスへのアクセスを制限する。これによって、ユーザーがアクセストークンを取得できるAPIオーディエンスが限られるか、ユーザーがオーディエンスからアクセストークンを取得できる状況が制限される。このとき、各組織にカスタムAPIオーディエンスを作成している場合には、認証しているユーザーの組織がAPIオーディエンスの組織と一致していることを、ルールで保証しなくてはなりません。