Skip to main content
このチュートリアルでは、認可コードフローを使用して独自のAPIを呼び出す方法を紹介します。このフローの仕組みや、これを使用すべき理由について知りたい場合は、認可コードフローを参照してください。通常のWebアプリにログインを追加する方法を知りたい場合は、認可コードフローを使用してログインを追加するを参照してください。
Auth0 を使うと、次の方法でアプリケーションにフローを簡単に実装できます。
  • Regular Web App Quickstarts: このフローを実装する最も簡単な方法です。
  • Authentication API: 独自のソリューションを構築したい場合は、このまま読み進めて、API を直接呼び出す方法を確認してください。

事前準備

このチュートリアルを始める前に:
  • Auth0 にアプリケーションを登録する.
    • アプリケーションの種類Regular Web Apps を選択します。
    • Allowed Callback URL{https://yourApp/callback} を追加します。
    • アプリケーションの グラントタイプ認可コード が含まれていることを確認します。設定方法については、グラントタイプ を更新するを参照してください。
    • アプリケーションでリフレッシュトークンを使用できるようにする場合は、アプリケーションの グラントタイプリフレッシュトークン が含まれていることを確認します。設定方法については、グラントタイプ を更新するを参照してください。リフレッシュトークンの詳細については、refresh tokensを参照してください。
  • Auth0 に API を登録する
    • API が以前のトークンの有効期限が切れた際に新しいトークンを取得できるよう、API でリフレッシュトークンを受け取れるようにしたい場合は、オフラインアクセスの許可 を有効にします。

ステップ

このステップには、次のプロセスのうち1つ以上が含まれる場合があります。
  • ユーザーを認証する
  • 認証を処理するために、ユーザーをIDプロバイダーにリダイレクトする
  • アクティブなシングルサインオン (SSO) セッションがあるか確認する
  • 以前に同意が与えられていない場合は、要求された権限レベルに対するユーザーの同意を取得する
ユーザーを認可するには、アプリでユーザーを認可 URLに送る必要があります。

認可 URL の例

パラメータ
カスタム API の呼び出し時にユーザーを認可する場合は、次の点に注意してください。
  • audience パラメータを含める必要があります
  • 対象 API でサポートされている追加のスコープを含めることができます
例として、アプリに login を追加する際の認可 URL 用 HTML スニペットは次のようになります。

レスポンス

すべてが正常に進むと、HTTP 302 レスポンスが返されます。認可コードは URL の末尾に含まれます。
認可コードを取得できたら、それをトークンと交換する必要があります。前のステップで取り出した認可コード (code) を使用して、トークン URLPOST してください。

トークン URL への POST の例

パラメータ

レスポンス

すべて正常に完了すると、access_tokenrefresh_tokenid_tokentoken_type の値を含むペイロードとともに HTTP 200 レスポンスが返されます:
保存する前に、トークンを検証してください。方法については、ID トークンを検証するアクセストークンを検証する をご覧ください。
ID トークンには、デコードして取り出す必要があるユーザー情報が含まれています。アクセストークンは、Auth0 Authentication APIの/userinfoエンドポイントまたは他のAPIを呼び出す際に使用します。独自のAPIを呼び出す場合、APIで最初に行う必要があるのはアクセストークンの検証です。リフレッシュトークンは、以前のアクセストークンまたはIDトークンの有効期限が切れた後に新しいトークンを取得するために使用されます。refresh_token がレスポンスに含まれるのは、offline_access スコープを含め、ダッシュボードでAPIのオフラインアクセスを許可を有効にした場合のみです。
リフレッシュトークンは、ユーザーが実質的に無期限で認証済みの状態を維持できるため、安全に保管する必要があります。
通常の Web アプリケーションから API を呼び出すには、アプリケーションで取得したアクセストークンを、HTTP リクエストの Authorization ヘッダーで Bearer トークンとして渡す必要があります。
このチュートリアルに沿って以下の手順を完了している場合は、すでにリフレッシュトークンを取得済みです。
  • API でオフラインアクセスの許可を有効にした
  • authorize エンドポイント を通じて認証リクエストを開始する際に、offline_access スコープを含めた。
リフレッシュトークンを使用して、新しいアクセストークンを取得できます。通常、新しいアクセストークンが必要になるのは、以前のトークンの有効期限が切れた場合や、新しいリソースに初めてアクセスする場合に限られます。APIを呼び出すたびに新しいアクセストークンを取得するためにエンドポイントを呼ぶのは推奨されません。Auth0は、同じIPおよび同じトークンを使用してエンドポイントに送信できるリクエスト数に対してレート制限を設けており、その量を制限します。トークンを更新するには、grant_type=refresh_tokenを使用して、Authentication APIの/oauth/tokenエンドポイントにPOSTリクエストを送信します。
トークン URL への POST の例
パラメータ
レスポンス
すべてが順調に進めば、新しい access_token、その有効期間 (秒単位、expires_in) 、付与された scope の値、および token_type を含むペイロードとともに HTTP 200 レスポンスが返されます。最初のトークンのスコープに openid が含まれていた場合、レスポンスには新しい id_token も含まれます:
保存する前に、トークンを検証してください。方法については、ID トークンを検証するアクセストークンを検証する をご覧ください。

使用例

トークンをカスタマイズする

Auth0 Actions を使用すると、 のスコープを変更したり、アクセストークンや にカスタムクレームを追加したりできます。Actions の詳細については、Auth0 Actions の仕組みを理解する を参照してください。 これを行うには、ユーザーの認証後に実行される次の Post-Login Action を追加します。
Auth0 は、OpenID Connect (OIDC) 仕様 で定義されている構造化クレーム形式で、プロファイル情報を返します。つまり、ID トークンまたはアクセストークンに追加するカスタムクレームは、名前の衝突を避けるためにガイドラインと制限事項に準拠する必要があります

さらに詳しく