ユーザーを認証して標準クレームをリクエストする
-
ユーザーを認可 URL に送信して、認証フローを開始します。
この例では、次の点に注目してください。
-
response_typeパラメーターには 1 つの値が含まれます。code: 通常の Web アプリフローを使用しているため、最初のリクエストでは認可コードを要求します。このコードを使ってトークンをリクエストすると、認証に必要な ID トークンを受け取れます。
-
scopeパラメーターには、要求する OIDC スコープである 3 つの値が含まれます。openid: アプリケーションがユーザーの本人確認に OIDC を使用することを示します。profile:name、nickname、pictureを取得します。email:emailとemail_verifiedを取得します。
-
- ユーザーが同意した後 (必要な場合) 、Auth0 がアプリにリダイレクトしたら、トークンをリクエストします。
- レスポンスから ID トークンを取り出して、デコードします。次のクレームが表示されるはずです。 これで、アプリはユーザー属性を取得し、それらを使って UI をパーソナライズできます。
カスタム API へのアクセスをリクエストする
scope をリクエストします。これを行うには、API から予定を読み取るために必要な scope を含む を取得する必要があります。なお、アクセストークンのリクエストは、ID トークンのリクエストに依存しません。
カスタム API を使用する前に、呼び出す API で利用可能なスコープを把握しておく必要があります。カスタム API を自分で管理している場合は、アプリケーションと API の両方を Auth0 に登録し、Auth0 Dashboard を使用して API のスコープを定義する必要があります。また、定義済みの権限を使って、ユーザー向けの同意プロンプトをカスタマイズすることもできます。
-
ユーザーを認可 URL に送信して、認可フローを開始します。
この例では、次の点に注目してください。
-
response_typeパラメーターには、引き続き 1 つの値が含まれます。code: 通常の Web アプリフローを使用しているため、最初のリクエストでは認可コードを要求します。このコードを使ってトークンをリクエストすると、API の呼び出しに使用できるアクセストークンを受け取ります。
-
scopeパラメーターには 1 つの値、つまりリクエストする API スコープが含まれます。read:appointments: API からユーザーの予定を読み取れるようにするためです。
-
audienceパラメーターは新たに追加されたもので、1 つの値を含みます。- ユーザーの予定を読み取りたい API の一意の識別子です。
-
- 前の例と同様に、ユーザーが同意し (必要な場合) 、Auth0 がアプリにリダイレクトしたら、トークンをリクエストします。
- レスポンスからアクセストークンを取り出し、そのアクセストークンを認証情報として使用して API を呼び出します。
ユーザーを認証し、標準クレームとカスタム API へのアクセスをリクエストする
scope もリクエストします。これにより、呼び出し元のアプリケーションはそのユーザーの予定を読み取れるようになります。これを行うには、次の 2 つのトークンを取得します。
-
以下を含む ID トークン:
- ユーザー名
- ニックネーム
- プロフィール画像
- メール情報
- API から予定を読み取るための適切なスコープを含むアクセストークン。なお、アクセストークンのリクエストは ID トークンのリクエストに依存しません。
-
ユーザーを認可 URL に送信して、認証フローを開始します。
この例では、次の点に注目してください。
-
response_typeパラメーターには、引き続き 1 つの値が含まれます。code: 通常の Web アプリフローを使用しているため、最初のリクエストでは認可コードを要求します。このコードを使ってトークンをリクエストすると、認証に必要な ID トークンと、API の呼び出しに使用できるアクセストークンの両方を受け取ります。
-
scopeパラメーターは OIDC スコープと API スコープの両方に使用されるため、ここでは 4 つの値が含まれます。openid: アプリケーションが、ユーザーの本人確認に OIDC を使用する意図があることを示します。profile:name、nickname、pictureを取得するために使用します。email:emailとemail_verifiedを取得するために使用します。read:appointments: API からユーザーの予定を読み取れるようにするために使用します。
-
audienceパラメーターには 1 つの値が含まれます。- ユーザーの予定を読み取りたい API の一意の識別子
-
- 前の例と同様に、ユーザーが同意すると (必要な場合) 、Auth0 がアプリにリダイレクトした後でトークンをリクエストします。
- レスポンスから ID トークンを取り出してデコードし、ユーザー属性を取得して UI のパーソナライズに使用します。
- レスポンスからアクセストークンを取り出し、そのアクセストークンを認証情報として使用して API を呼び出します。
トークンにカスタムクレームを追加する
/userinfo エンドポイントを呼び出した際にもカスタムクレームを取得できるようになります (ただし、Action が実行されるのは認証プロセス中のみです) 。
Auth0 では名前空間付きクレームと名前空間なしクレームの両方を使用できますが、いくつかの制限があります (一般的な制限 を参照) 。名前の衝突を避けるため、名前空間付きクレームを使用することをお勧めします。衝突が発生してもトランザクション自体は失敗しませんが、カスタムクレームはトークンに追加されません。
- ユーザーは以前に、
preferred_contactとしてemailを、favorite_colorとしてredを選択しており、それをユーザーのuser_metadataの一部として保存しています。 - このユーザーに対して、Management API または Dashboard を使用して、アプリケーション固有の情報を設定しています。
subクレームには、user_idプロパティの値が含まれています。favorite_colorとuser_metadataのプロパティはどちらも含まれていません。これは、 Connect (OIDC) では、favorite_colorやuser_metadataを表す標準クレームが定義されていないためです。
- Auth0 Dashboard > Actions > Library に移動し、Build Custom を選択します。
-
Action にわかりやすい Name (たとえば
Add user metadata to tokens) を入力し、Login フローに Action を追加するため、トリガーとしてLogin / Post Loginを選択してから Create を選択します。 -
Actions Code Editor を開き、次の JavaScript コードをコピーして貼り付け、Save Draft を選択して変更を保存します。
- Actions Code Editor のサイドバーで Test (再生アイコン) を選択し、続けて Run を選択してコードをテストします。
- Action を本番環境で有効にする準備ができたら、Deploy を選択します。
favorite_color と preferred_contact のカスタムクレームを ID トークン に含めます。
api.idToken.setCustomClaims メソッドを使用して、ID トークンにカスタムクレームを追加しています。これらのクレームをアクセストークンに追加するには、api.accessToken.setCustomClaim メソッドを使用します。
このトリガーのイベントオブジェクトについて詳しくは、Actions Triggers: post-login - Event Object を参照してください。トークンについて詳しくは、Tokens を参照してください。