Skip to main content
接続で Token Vault が有効になっている場合、アクセストークンとリフレッシュトークンはユーザーの identities 配列には保存されなくなります。代わりに、Token Vault 内の安全なトークンセットに保存されます。Token Vault を有効にするには、Configure Token Vault を参照してください。
Facebook や GitHub などの外部 (IdP) でユーザーの認証に成功すると、IdP は Auth0 に返すユーザープロファイルに を含めることがよくあります。 このトークンを取得して、IdP の API を呼び出すことができます。
この記事では、選択した IdP との接続がすでに設定済みであることを前提としています。まだの場合は、Identity Providers Supported by Auth0 に移動し、使用する IdP を選択して設定手順に従ってください。
実行する手順は、コードがバックエンドで動作するか、フロントエンドで動作するかによって異なります。
  • コードがバックエンドで動作する場合は、サーバーがシークレットを安全に保存できる信頼された環境であるとみなせます (後述するように、バックエンドのシナリオではシークレットを使用します) 。その場合は、この記事のバックエンドのセクションに進んでください。
  • コードがフロントエンドで動作する場合 (たとえば SPA、Native デスクトップアプリ、モバイルアプリなど) は、アプリで資格情報を安全に保持できないため、別の方法に従う必要があります。この場合は、この記事のフロントエンドのセクションに進んでください。

バックエンドから

ユーザーを認証すると、IdP は Auth0 に返すユーザープロファイルにアクセストークンを含めていることがよくあります。 セキュリティおよびコンプライアンス上の理由から、Auth0 はこのトークンをユーザープロファイルの一部としてアプリに送信しません。これを取得するには、Auth0 の にアクセスし、ユーザーの完全なプロファイルを取得する必要があります。
  1. Auth0 Management API を呼び出すためのアクセストークンを取得します。
  2. 手順 1 で取得したアクセストークンを使用して、Auth0 Management API の Get Users by ID endpoint を呼び出します。このエンドポイントは、IdP のアクセストークンを含むユーザーの完全なプロファイルを返します。
  3. レスポンスから IdP のアクセストークンを取り出し、それを使って IdP の API を呼び出します。

ステップ 1: トークンを取得する

Management API を呼び出すには、アクセストークンが必要です。

Management API 用のテストアプリケーションを作成する

Management APIv2 Token をリクエストするのが初めての場合は、Management API を呼び出すために使用するアプリケーションを作成して設定する必要があります。
  1. Auth0 Dashboard > アプリケーション > APIs に移動し、Auth0 Management API を選択します。
  2. API Explorer ビューを選択し、Create & Authorize a Test Application をクリックします。
これにより新しいアプリケーションが作成され、Management API のすべてのスコープが付与されます。つまり、このアプリケーション用に生成されたトークンで、Management API のすべてのエンドポイントにアクセスできるようになります。

ボタンが表示されませんか?

このボタンが表示されない場合は、Management API 用に認可されたアプリケーションがすでに少なくとも 1 つあることを意味します。この場合は、既存のアプリケーションのスコープを更新してそれを使用するか、以下の手順で新しいアプリケーションを作成できます。
  1. Auth0 Dashboard > アプリケーション > アプリケーション に移動し、Create Application を選択します。
  2. Machine to Machine アプリケーション を選択し、続けて Create を選択します。
  3. Select an API ドロップダウンから、Auth0 Management API を選択します。
  4. 必要なスコープを有効にし、Authorize を選択します。
  5. APIs ビューを選択し、Auth0 Management API のトグルを有効にします。
セキュリティ上の理由から、使用するアプリケーションには必要なスコープだけを割り当てることをお勧めします。このケースで必要なスコープは read:usersread:user_idp_tokens です。必要なスコープは、各エンドポイントごとに Management API Explorer に記載されています。
登録済みの Auth0 Management API にスコープを付与または削除するには、Machine to Machine アプリケーション ビュー を選択します。
アプリケーションに付与されたスコープを編集する

Management API トークンを取得する

これで設定は完了し、Management API トークンを取得する準備が整いました。
  1. 登録済みの Auth0 Management API で、Test ビューを選択します。
  2. Application ドロップダウンからアプリケーションを選択すると、すぐに使えるスニペットにカスタマイズ済みの変数が自動入力されます。
  3. スニペットで使用する言語を選択し、それをコピーして実行します。
  4. レスポンスから access_token プロパティを取得します。これを使用して Management API にアクセスします。

スニペットでは何をしていますか?

このスニペットは、OAuth 2.0 クライアントクレデンシャルグラントを使用して、Auth0 Authentication API の /oauth/token エンドポイントPOST リクエストを送信します。これは、machine-to-machine プロセスが API にアクセスするために使用するグラントです。フローの詳細については、クライアント認証情報フローを参照してください。

トークンの有効期限

デフォルトでは、取得したトークンは 24 時間 (86,400 秒) で失効します。これを変更するには、次の手順に従います。
  1. Auth0 Dashboard > アプリケーション > APIs に移動し、Auth0 Management API を選択します。
  2. 設定ビューを選択し、Token Expiration (Seconds) フィールドで新しい値を入力して、Save をクリックします。設定できる最大値は 2,592,000 秒 (30 日) ですが、デフォルト値のままにしておくことをお勧めします。
次回生成するトークンには、更新後の有効期限が適用されます。
これらのトークンは取り消せません。リスクを最小限に抑えるため、短期間で失効するトークンを発行し、各アプリケーションには必要なスコープのみを付与することをお勧めします。本番環境では、古いトークンの有効期限が切れた際に新しいトークンを取得するシンプルな CLI を構成できます。

ステップ 2: 完全なユーザープロファイルを取得する

ユーザーのプロファイルを取得するには、前のセクションで抽出した アクセストークン を使って、Management API の Get a User endpoint を呼び出します。 以下の値を置き換えてください。
  • {userId}: IdP の API を呼び出す対象ユーザーの ID。
  • {yourAccessToken}: 前のセクションで抽出した アクセストークン。

ユーザー ID はどこで確認できますか?

  • テスト目的であれば、Auth0 Dashboard > User Management > Users でユーザー ID を確認できます。対象のユーザーを見つけて、user_id フィールドの値をコピーしてください。
  • 実装では、ID トークンsub claim からユーザー ID を抽出するか、Authentication API の /userinfo endpoint を呼び出して、レスポンスの user_id プロパティから抽出できます。

ステップ 3: IdP のアクセストークンを抽出する

IdP の API 呼び出しに使用されるアクセストークンは、ユーザーの identities 配列内にある user.identities[0].access_token で確認できます。
一部の IDプロバイダー では、Auth0 はリフレッシュトークンも保存します。これを使用すると、IdP 用の新しいアクセストークンを取得できます。これは、BitBucket、Google (OAuth 2.0)、OAuth 2.0、SharePoint、Azure AD で利用できます。詳しくは、IDプロバイダーのアクセストークン を参照してください。
ほとんどの場合、ユーザーが持つアイデンティティは 1 つだけですが、異なる複数の接続を通じて複数回サインインしており、アカウントリンク を使用している場合は、複数あることがあります。 このサンプルレスポンスでは、ユーザーのアイデンティティは google-oauth2 の 1 つだけであることがわかります。
これで、IdP の API を呼び出す準備が整いました。具体的な手順については、IdP のドキュメントを参照してください。
IdP のトークンをクライアントサイドのアプリケーションに公開しないでください。アプリケーションがパブリックな場合は、この記事のフロントエンドのセクションを参照してください。
アイデンティティプロバイダーのアクセストークンに対して特定のスコープ/権限をリクエストする方法について詳しくは、Identity Provider の API を呼び出すためにスコープ/権限を追加するを参照してください。

フロントエンドから

パブリックアプリケーション (SPA、Nativeデスクトップアプリ、またはモバイルアプリ) を扱っている場合は、こちらを参照してください。 フロントエンドアプリで IdP API を呼び出す場合、その手順はバックエンドの場合とは異なります。フロントエンドアプリは、資格情報を安全に保持できないパブリックアプリケーションだからです。SPA のコードは閲覧や改変が可能で、Native アプリやモバイルアプリは逆コンパイルや解析ができるため、シークレットキーやパスワードのような機密情報を安全に保持できるものとして信頼することはできません。 具体的には、バックエンドの手順の最初のステップで /oauth/token を呼び出す際に使用する Machine to Machine Application の を、安全に保持できません。 その代わり、バックエンド用のプロキシを構築し、それを API としてアプリケーションに公開する必要があります。

プロキシを構築する

まず、この記事のバックエンドのセクションに記載されている手順を実装するプロセスをバックエンドに構築し、それを API としてアプリケーションに公開します。 同じバックエンドプロセスから IdP の API を呼び出すため、アクセストークンがパブリックアプリケーションに公開されることはありません。 次に、パブリックアプリケーションから Proof Key for Code Exchange (PKCE) を使用した認可コードフローを使って、プロキシ API を呼び出します。

方法を見る

まだこれを実装したことがない場合は、API を使用するシングルページアプリケーション (SPA) のアーキテクチャシナリオが参考になるかもしれません。扱っているのは別のシナリオですが、Auth0 の設定方法、SPA から API を呼び出す方法、API のバリデーションを実装する方法を説明しています。Angular 2Node.js を使用したサンプルも含まれています。また、API を使用するモバイルアプリケーションのバリエーションも提供しています (サンプルでは AndroidNode.js を使用しています) 。