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