ここでは、任意のIdPとの接続をすでに構成したものと仮定しています。まだ構成していない場合は、「Auth0が対応しているIDプロバイダー」を確認し、任意のIdPを選んで、構成の手順に従ってください。
- コードがバックエンドで実行される場合、サーバーがシークレットを安全に保存できると想定できます(後でわかるように、バックエンドシナリオではシークレットを使用します)。その場合は、この記事の[backend section(バックエンドのセクション)]に進んでください。
- コードがフロントエンドで実行される場合(たとえば、SPA、ネイティブデスクトップ、モバイルアプリなど)、アプリは資格情報を安全に保持できないため、別のアプローチに従う必要があります。その場合は、この記事の[frontend section(フロントエンド)]に進んでください。
バックエンドから
ユーザーを認証すると、IdPは通常、Auth0に返すユーザープロファイルにアクセストークンを含めます。 セキュリティとコンプライアンス上の理由から、Auth0はこのトークンをユーザープロファイルの一部としてアプリに送信しません。これを取得するには、Auth0 にアクセスして、ユーザーの完全なプロファイルを取得する必要があります。- [Auth0 Management API]を呼び出すためのアクセストークンを取得します。
- ステップ1で取得したアクセストークンを使用して、Auth0 Management APIの[Get Users by ID endpoint(IDエンドポイントによるユーザー取得)]を呼び出します。このエンドポイントは、IdPアクセストークンを含む完全なユーザープロファイルを返します。
- 応答からIdPアクセストークンを抽出し、それを使用してIdPのAPIを呼び出します。
ステップ1:トークンを取得
Management APIを呼び出すには、アクセストークンが必要です。Management APIのテストアプリケーションを作成
Management APIv2 Token(Management APIv2トークン)を初めて要求する場合は、Management APIを呼び出すために使用できるアプリケーションを作成して構成する必要があります。- [Auth0 Dashboard]>[Applications(アプリケーション)]>[API]に移動して、[Auth0 Management API]を選択します。
- [API Explorer(API エクスプローラー)] ビューを選択し、** [Create & Authorize a Test Application(テストアプリケーションの作成と承認)]** をクリックします。
ボタンが表示されない場合
このボタンが表示されない場合は、Management APIに少なくとも1つの認可済みアプリケーションがすでに存在しています。既存のアプリケーションのスコープを更新して使用するか、以下の手順で新しいものを作成してください。
- [Auth0 Dashboard]>[Applications(アプリケーション)]>[Applications(アプリケーション)]に移動して、[Create Application(アプリケーションの作成)] を選択します。
- [Machine to Machine Applications(マシンツーマシンアプリケーション)] を選択して [Create(作成)] をクリックします。
- [Select an API(APIの選択)] ドロップダウンから [
Auth0 Management API
]を選択します。 - 必要なスコープを有効にして、[Authorize(認可)] を選択します。
- API ビューを選択して、** Auth0 Management API** を有効に設定します。
セキュリティ上の理由から、使用するアプリケーションには必要なスコープのみを割り当てるようにしてください。このケースで言うと、必要なスコープは、
read:users
とread:user_idp_tokens
です。必要なスコープはManagement API Explorerでエンドポイントごとにリストされています。
Management APIトークンの取得
これで構成が完了し、Management APIトークンを取得する準備が整いました。- 登録済みのAuth0 Management APIから、[Test(テスト)] ビューを選択します。
- ドロップダウンから [Application(アプリケーション)] を選択し、カスタマイズされた変数を使用してすぐに使用できるスニペットを事前に設定します。
- スニペットの優先言語を選択し、コピーして実行します。
- 応答から
access_token
プロパティを抽出します。これは、Management APIにアクセスするために使用します。
スニペットの役目
スニペットは、
POST
操作をAuth0の認証APIの/oauth/tokenエンドポイントに OAuth 2.0クライアント資格情報付与 を使って実行します。これはマシンツーマシンプロセスがAPIへのアクセス時に使用する付与です。フローの詳細については、「Client Credentials Flow(クライアントの資格情報フロー)」を参照してください。トークンの有効期限
デフォルトでは、受け取ったトークンの有効期限は24時間(86,400秒)です。これを変更するには、- [Auth0 Dashboard]>[Applications(アプリケーション)]>[API]に移動して、[Auth0 Management API]を選択します。
- [Settings(設定)] ビューを選択し、** [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(ユーザー)]で、ユーザーを見つけることができます。ユーザーを見つけたら、user_id フィールドの値をコピーします。
-
実装の場合には、IDトークンの
sub
クレームからユーザーIDを抽出するか、認証APIの/userinfoエンドポイントを呼び出して、user_id
応答プロパティからユーザーIDを抽出します。
ステップ3:IdPアクセストークンの抽出
IdPのAPIを呼び出すために使用されるアクセストークンは、ユーザーのID
配列内にあります。user.identities[0].access_token
.
Auth0は、特定のIDプロバイダーに対してリフレッシュトークンも保管します。保管されたトークンを使って、IdPから新しいアクセストークンを取得できます。この方法は、BitBucket、Google (OAuth 2.0)、OAuth 2.0、SharePoint、Entra IDで機能します。詳細については、「IDプロバイダーのアクセストークン」をお読みください。
google-oauth2
。
IdPトークンをクライアント側のアプリケーションに公開しないでください。アプリケーションがパブリックの場合は、この記事のフロントエンドのセクションを参照してください。
IDプロバイダーアクセストークンの特定のスコープを要求する方法については、「スコープ/権限を追加してIPプロバイダーのAPIを呼び出す」をお読みください。
フロントエンドから
パブリックアプリケーション(SPA、ネイティブデスクトップ、またはモバイルアプリケーション)を使用している場合は、ここを参照してください。 フロントエンドアプリを使用する場合、フロントエンドアプリは 資格情報を安全に保持できない パブリックアプリケーションであるため、IdP APIを呼び出すプロセスはバックエンドプロセスとは異なります。SPAコードは表示および変更でき、ネイティブ/モバイルアプリは逆コンパイルおよび検査できるため、秘密鍵やパスワードなどの機密情報を保持することはできません。 具体的には、バックエンドプロセスの最初のステップで/oauth/token
を呼び出すために使用するマシンツーマシンアプリケーションの [(クライアントシークレット)] を安全に保持できません。
代わりに、バックエンドのプロキシを構築し、それをAPIとしてアプリケーションに公開する必要があります。
プロキシの構築
まず、この記事のbackend section(バックエンド)セクションに記載されている手順を実装するプロセスをバックエンドに構築し、それをAPIとしてアプリケーションに公開します。 IdPのAPIは同じバックエンドプロセスから呼び出すため、アクセストークンはパブリックアプリケーションに公開されません。 次に、Authorization Code Flow with Proof Key for Code Exchange (PKCE)(コード交換用の証明キー(PKCE)を使用した認可コードフロー)を使用して、パブリックアプリケーションからプロキシAPIを呼び出します。方法の説明
以前にこれを実装したことがないのであれば、APIを使ったシングルページアプリケーション(SPA)アーキテクチャ のシナリオが役に立つかもしれません。さまざまなシナリオを取り上げて、Auth0を構成する方法、SPAからAPIを呼び出す方法、API検証の実装方法を説明しています。Angular 2とNode.jsを使ったサンプルもあります。また、APIを使ったモバイルアプリケーションのバリエーション(サンプルではAndroidとNode.jsを使用)もあります。