Skip to main content
このセクションでは、Auth0 Dashboard で必要な設定を一通り確認します。

API を作成する

左側の APIs メニュー をクリックし、Create API ボタンをクリックします。 API について、次の情報を入力する必要があります。
  • Name: API の表示名です。機能には影響しません。
  • Identifier: API の一意の識別子です。URL を使用することをおすすめしますが、公開されている URL である必要はありません。Auth0 がこの API を呼び出すことはありません。この値は後から変更できません。
  • : トークンの署名に使用するアルゴリズムです。指定できる値は HS256RS256 です。RS256 を選択すると、トークンはテナントの秘密鍵で署名されます。署名アルゴリズムの詳細については、Signing Algorithms を参照してください。
Dashboard - Applications - APIs - Create API - Popup
必要な情報を入力し、Create ボタンをクリックします。

署名アルゴリズム

API を作成する際は、トークンの署名に使用するアルゴリズムを選択する必要があります。署名は、 の送信者が本人であることを検証し、メッセージが途中で改ざんされていないことを保証するために使用されます。
署名は JWT の一部です。JWT の構造に不慣れな場合は、JSON Web Token Structureをご覧ください。
署名部分を作成するには、エンコードされたヘッダー、エンコードされたペイロード、シークレット、およびヘッダーで指定されたアルゴリズムを使って署名する必要があります。JWT ヘッダーの一部であるこのアルゴリズムが、API に対して選択する HS256 または RS256 です。
  • RS256非対称アルゴリズムです。つまり、公開鍵と秘密鍵 (シークレット) の 2 つの鍵があります。Auth0 は署名の生成に使用する秘密鍵を保持し、JWT の利用者は署名の検証に使用する公開鍵を保持します。
  • HS256対称アルゴリズムです。つまり、2者間で共有されるシークレット鍵が 1 つだけあります。同じ鍵が署名の生成と検証の両方に使用されます。そのため、鍵の機密性を保つには特に注意が必要です。
最も安全で、かつ推奨される方法は RS256 を使用することです。理由の一部は次のとおりです。
  • RS256 では、秘密鍵の保持者 (Auth0) のみがトークンに署名でき、公開鍵を使えば誰でもそのトークンが有効かどうかを確認できます。
  • HS256 では、秘密鍵が漏えいした場合、新しいシークレットを使って API を再デプロイする必要があります。RS256 では、複数のオーディエンスに対して有効なトークンを要求できます。
  • RS256 では、新しいシークレットを使って API を再デプロイしなくても、鍵のローテーションを実装できます。
JWT 署名アルゴリズムのより詳しい概要については、JSON Web Token (JWT) Signing Algorithms Overviewを参照してください。

権限を設定する

アプリケーションを作成したら、認可時にアプリケーションが要求できる権限を設定する必要があります。 API の設定画面で、Permissions タブを開きます。このセクションでは、前述した 4 つのスコープ、read:timesheetscreate:timesheetsdelete:timesheetsapprove:timesheets をすべて追加できます。
ダッシュボード - Applications - APIs - Permissions

アプリケーションを作成する

Auth0 には 4 種類のアプリケーションがあります。Native App (モバイルアプリやデスクトップアプリで使用) 、Single-Page Web AppRegular Web App、そして Machine to Machine App (CLI、デーモン、またはバックエンドで実行されるサービスで使用) です。今回のシナリオでは、モバイルアプリケーション用の新しいアプリケーションを作成するため、アプリケーションタイプとして Native を使用します。 新しいアプリケーションを作成するには、dashboard に移動し、左側の Applications メニューをクリックします。次に、+ Create Application ボタンをクリックします。 アプリケーション名を設定し (ここでは Timesheets Mobile を使用します) 、タイプとして Native App を選択します。 Create をクリックします。

Authorization Extension を設定する

お使いのテナントに Authorization Extension がインストールされていることを確認してください。手順の詳細については、Authorization Extension のドキュメントを参照してください。

権限を定義する

すでに定義したスコープに対応する権限を定義する必要があります。Authorization Extension で Permissions タブをクリックし、Create Permission ボタンをクリックします。表示されたダイアログで、各権限の詳細を入力します。権限名は、対応するスコープ名と完全に一致している必要があります。 同様に、残りのすべてのスコープについても権限を作成します。

ロールを定義する

Roles タブに移動し、2 つのロールを作成します。Create Role ボタンをクリックして、Timesheets SPA アプリケーションを選択します。ロールの名前と説明に Employee を設定し、delete:timesheetscreate:timesheetsread:timesheets の権限を選択します。Save をクリックします。 次に、同じ手順で Manager ロールを作成し、すべての権限が選択されていることを確認します。
ダッシュボード - Extensions - Authorization Extension - Manager ロールの作成

ユーザーをロールに割り当てる

すべてのユーザーを、Manager または User のいずれかのロールに割り当てる必要があります。これを行うには、Authorization Extension の Users タブを開いてユーザーを選択します。ユーザー情報画面で Roles タブを開きます。 Add Role to User ボタンをクリックし、そのユーザーに適したロールを選択すると、ユーザーにロールを追加できます。

Authorization Extension の設定

Authorization Extension の Rule が公開済みであることも確認してください。これを行うには、Authorization Extension の右上にあるユーザーアバターをクリックし、Configuration オプションを選択します。 Permissions を有効にしてから、Publish Rule ボタンをクリックします。

トークンのスコープを検証する Rule を作成する

このプロセスの最後の手順では、に含まれるスコープが、ユーザーに割り当てられた権限に基づいて有効かどうかを検証する Rule を作成します。ユーザーに対して無効なスコープは、アクセストークンから削除する必要があります。 で Rules タブに移動します。Authorization Extension によって作成された Rule が表示されるはずです。 Create Rule ボタンをクリックし、Empty Rule テンプレートを選択します。Rule には、たとえば Access Token Scopes のような名前を付けて、次のコードを指定します。
上記のコードにより、すべてのAccess Tokenには、ユーザーのpermissionsに基づいて有効な、適切な形式のスコープ (例:action:areadelete:timesheets) のみが含まれるようになります。完了したら、Save ボタンをクリックします。 Rules は Rules ページに表示されている順に実行されるため、新しく作成したルールが Authorization Extension のルールより下に配置され、Authorization Extension のルールの後に実行されるようにしてください。 前のチュートリアル 1. ソリューションの概要 次のチュートリアル 3. API + Mobile の実装