ユーザーを認証して標準クレームをリクエストする
-
ユーザーを認可 URL にリダイレクトして、認証フローを開始します。
この例では、次の点に注意してください。
-
response_typeパラメーターには 1 つの値が含まれます。code: 通常の Web アプリケーションフローを使用しているため、最初のリクエストでは認可コードを要求します。この code を使ってトークンをリクエストすると、認証に必要な IDトークンを受け取ります。
-
scopeパラメーターには 3 つの値、つまり要求する OIDC スコープが含まれます。openid: アプリケーションが OIDC を使用してユーザーの本人確認を行うことを示します。profile:name、nickname、pictureを取得します。email:emailとemail_verifiedを取得します。
-
- ユーザーが同意した後 (必要な場合) 、Auth0 がアプリにリダイレクトしたら、トークンをリクエストします。
- レスポンスから IDトークンを抽出し、デコードします。次のクレームが表示されるはずです。 これでアプリでユーザー属性を取得し、それらを使って UI をパーソナライズできます。
カスタム API へのアクセスを要求する
-
ユーザーを認可 URL にリダイレクトして、認可フローを開始します。
この例では、次の点に注意してください。
-
response_typeパラメーターには引き続き 1 つの値が含まれます。code: 通常の Web アプリのフローを使用しているため、最初のリクエストでは認可コードを要求します。この code を使ってトークンを要求すると、API の呼び出しに使用できるアクセストークンを受け取ります。
-
scopeパラメーターには 1 つの値、つまり要求する API のスコープが含まれます。read:appointments: API からユーザーの予定を読み取れるようにします。
-
audienceパラメーターは新しく、1 つの値が含まれます。- ユーザーの予定を読み取りたい API の一意の識別子です。
-
- 前の例と同様に、ユーザーが同意すると (必要な場合) 、Auth0 はアプリにリダイレクトします。その後、トークンを要求します。
- レスポンスからアクセストークンを取り出し、資格情報としてそのアクセストークンを使用して API を呼び出します。
ユーザーを認証し、標準クレームとカスタム API へのアクセスを要求する
-
以下を含む IDトークン:
- ユーザーの名前
- ニックネーム
- プロフィール画像
- メールアドレス情報
- API から予定を読み取るための適切なスコープを含むアクセストークン。なお、アクセストークンの要求は IDトークンの要求に依存しません。
-
ユーザーを認可 URL に送って、認証フローを開始します。
この例では、次の点に注意してください。
-
response_typeパラメーターには、引き続き 1 つの値が含まれます。code: 通常の Web アプリケーションフローを使用しているため、最初のリクエストでは認可コードを要求します。このcodeを使用してトークンを要求すると、認証に必要な 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プロパティの値が含まれます。- Connect (OIDC) では、
favorite_colorまたはuser_metadataを表す標準クレームが定義されていないため、favorite_colorプロパティもuser_metadataプロパティも含まれていません。
- Auth0 Dashboard > Actions > Library に移動し、Build Custom を選択します。
-
Action のわかりやすい 名前 を入力し (例:
Add user metadata to tokens) 、この Action を Login フローに追加するため、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 メソッドを使用します。
トリガーの event オブジェクトについて詳しくは、Actions Triggers: post-login - Event Object を参照してください。トークンについて詳しくは、Tokens を参照してください。