このチュートリアルでは、Hybrid Flow を使用して独自の API を呼び出す方法を説明します。フローの仕組みや Hybrid Flow を使用すべき理由については、Hybrid Flowを参照してください。
- Authentication API: 独自のソリューションを構築したい場合は、このまま読み進めて、API を直接呼び出す方法を確認してください。
前提条件
-
Auth0 にアプリケーションを登録する。
- 適切な Application Type を選択します。
- Allowed Callback URL に
{https://yourApp/callback}を追加します。 - アプリケーションの Grant Types に Implicit と 認可コード が含まれていることを確認します。手順については、Update Grant Types を参照してください。
- アプリケーションでリフレッシュトークンを使用できるようにするには、アプリケーションの Grant Types に Refresh Token が含まれていることを確認します。手順については、Update Grant Types を参照してください。リフレッシュトークンの詳細については、Refresh Tokens を参照してください。
-
Auth0 に API を登録する
- 以前のトークンの有効期限が切れたときに API が新しいトークンを取得できるよう、API でリフレッシュトークンを受け取れるようにする場合は、Allow Offline Access を有効にします。
手順
- ユーザーを認可: ユーザーに認可を求め、認可コードとともにアプリにリダイレクトします。
- トークンをリクエスト: 認可コードをトークンと交換します。
- API を呼び出す: 取得したアクセストークンを使用して API を呼び出します。
- トークンを更新: 既存のトークンの有効期限が切れたら、リフレッシュトークンを使用して新しいトークンをリクエストします。
- ユーザーを認証する
- 認証を処理するため、ユーザーを にリダイレクトする
- 有効な (SSO) セッションを確認する
- 以前に同意が与えられていない場合は、要求された権限レベルに対するユーザーの同意を取得する。
パラメーター
- パラメーターを含める必要があります
- 対象 API でサポートされている追加のスコープを含めることもできます
例として、アプリにログインを追加する際の認可 URL 用 HTML スニペットは次のようになります。
レスポンス
HTTP 302 レスポンスが返されます。要求した認証情報はレスポンス本文にエンコードされています。
response_type として何をリクエストしたかによって異なることに注意してください。
Auth0 は、認可 URL の呼び出しに含めた state の値も返します。
をデコードして解析すると、
c_hash という追加の claim が含まれていることがわかります。これは code のハッシュを含む claim です。この claim は、IDトークンが code と同時に発行される場合に必須であり、検証する必要があります。
- IDトークンヘッダーの
algclaim で指定されたハッシュアルゴリズムを使用して、codeの ASCII 表現のオクテットをハッシュ化します。 - ハッシュの左半分を Base64url エンコードします。
- 結果が
c_hashの値と一致することを確認します。
トークンを取得する
code) を使用して、トークンURL に POST します。
この手順で受け取るは、API の呼び出しに使用するものです。このチュートリアルの前の手順で受け取ったアクセストークンとは、必ず別に管理してください。
トークンURLにPOSTする例
パラメーター
レスポンス
access_token、refresh_token、id_token、token_type の各値を含むペイロードを伴う HTTP 200 レスポンスが返されます。
refresh_token がレスポンスに含まれるのは、offline_access スコープを指定し、Dashboard で API の Allow Offline Access を有効にした場合のみです。
API を呼び出す
リフレッシュトークン
- オフラインアクセスを許可するように API を設定した
- authorize エンドポイント を通じて認証リクエストを開始する際に、
offline_accessスコープを含めた
grant_type=refresh_token を使用して、Authentication API の /oauth/token エンドポイントに POST リクエストを送信します。
トークンURLへのPOSTの例
パラメーター
レスポンス
access_token、その有効期間 (秒単位、expires_in) 、付与された scope の値、および token_type を含むペイロードを伴う HTTP 200 レスポンスが返されます。初期トークンのスコープに openid が含まれている場合、レスポンスには新しい id_token も含まれます。