Skip to main content
このチュートリアルでは、Hybrid Flow を使用して独自の API を呼び出す方法を説明します。フローの仕組みや Hybrid Flow を使用すべき理由については、Hybrid Flowを参照してください。
Auth0 を使用すると、次の方法でアプリに Authorization Code Flow を簡単に実装できます。
  • Authentication API: 独自のソリューションを構築したい場合は、このまま読み進めて、API を直接呼び出す方法を確認してください。

前提条件

このチュートリアルを始める前に、以下を行ってください。
  • Auth0 にアプリケーションを登録する
    • 適切な Application Type を選択します。
    • Allowed Callback URL{https://yourApp/callback} を追加します。
    • アプリケーションの Grant TypesImplicit認可コード が含まれていることを確認します。手順については、Update Grant Types を参照してください。
    • アプリケーションでリフレッシュトークンを使用できるようにするには、アプリケーションの Grant TypesRefresh Token が含まれていることを確認します。手順については、Update Grant Types を参照してください。リフレッシュトークンの詳細については、Refresh Tokens を参照してください。
  • Auth0 に API を登録する
    • 以前のトークンの有効期限が切れたときに API が新しいトークンを取得できるよう、API でリフレッシュトークンを受け取れるようにする場合は、Allow Offline Access を有効にします。

手順

  1. ユーザーを認可: ユーザーに認可を求め、認可コードとともにアプリにリダイレクトします。
  2. トークンをリクエスト: 認可コードをトークンと交換します。
  3. API を呼び出す: 取得したアクセストークンを使用して API を呼び出します。
  4. トークンを更新: 既存のトークンの有効期限が切れたら、リフレッシュトークンを使用して新しいトークンをリクエストします。
任意: サンプルユースケースを確認する

ユーザーを認可する

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

認可 URL の例

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

レスポンス

正常に処理されると、HTTP 302 レスポンスが返されます。要求した認証情報はレスポンス本文にエンコードされています。
返される値は、response_type として何をリクエストしたかによって異なることに注意してください。 Auth0 は、認可 URL の呼び出しに含めた state の値も返します。
このトランザクションで受け取るアクセストークンは、最初に返されるアクセストークンにすぎません。これを API の呼び出しに使用することは推奨されません。
トークンは保存する前に検証してください。方法については、IDトークンを検証するアクセストークンを検証する を参照してください。
をデコードして解析すると、c_hash という追加の claim が含まれていることがわかります。これは code のハッシュを含む claim です。この claim は、IDトークンが code と同時に発行される場合に必須であり、検証する必要があります。
  1. IDトークンヘッダーの alg claim で指定されたハッシュアルゴリズムを使用して、code の ASCII 表現のオクテットをハッシュ化します。
  2. ハッシュの左半分を Base64url エンコードします。
  3. 結果が c_hash の値と一致することを確認します。

トークンを取得する

認可コードを取得したら、それをトークンと交換する必要があります。前の手順で取得した認可コード (code) を使用して、トークンURLPOST します。 この手順で受け取るは、API の呼び出しに使用するものです。このチュートリアルの前の手順で受け取ったアクセストークンとは、必ず別に管理してください。

トークンURLにPOSTする例

パラメーター

レスポンス

正常に処理されると、access_tokenrefresh_tokenid_tokentoken_type の各値を含むペイロードを伴う HTTP 200 レスポンスが返されます。
トークンは保存する前に検証してください。手順については、IDトークンを検証するおよびアクセストークンを検証するを参照してください。
IDトークンには、デコードして取り出す必要があるユーザー情報が含まれています。 アクセストークンは、Auth0 Authentication API の /userinfo エンドポイントまたは別の API を呼び出すために使用されます。独自の API を呼び出す場合、API で最初に行う必要があるのは、アクセストークンを検証することです。 リフレッシュトークンは、前のアクセストークンまたは IDトークン の有効期限が切れたあとに、新しいアクセストークンまたは IDトークン を取得するために使用されます。refresh_token がレスポンスに含まれるのは、offline_access スコープを指定し、Dashboard で API の Allow Offline Access を有効にした場合のみです。
リフレッシュトークンがあると、ユーザーの認証状態を実質的に無期限に維持できるため、安全に保管する必要があります。

API を呼び出す

通常の Web アプリケーション (または、アプリケーションの認証情報を安全に保存できる同様のケース) から API を呼び出すには、取得したアクセストークンを Bearer トークンとして HTTP リクエストの Authorization ヘッダーで渡す必要があります。

リフレッシュトークン

このチュートリアルに沿って進め、以下を完了していれば、すでにリフレッシュトークンを受け取っています。
  • オフラインアクセスを許可するように 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トークンの検証およびアクセストークンの検証を参照してください。

ユースケースの例

トークンのカスタマイズ

Rules を使用すると、返されるアクセストークンのスコープを変更したり、アクセストークンや IDトークンにクレームを追加したりできます。 (Rules の詳細については、Auth0 Rulesを参照してください。) これを行うには、以下の Rule を追加します。この Rule は、ユーザーの認証後に実行されます。
すべての Rules の実行が完了すると、トークンでスコープを利用できるようになります。
Auth0 は、OpenID Connect (OIDC) specification で定義されている構造化クレーム形式でユーザープロファイル情報を返します。つまり、IDトークンまたはアクセストークンに追加するカスタムクレームは、競合の可能性を避けるためにガイドラインと制限事項に準拠している必要があります。

詳細情報