このチュートリアルでは、ネイティブアプリ、モバイルアプリ、またはシングルページアプリから、PKCE を使用する認可コードフローを使って独自の API を呼び出す方法を説明します。フローの仕組みと、これを使用すべき理由については、Authorization Code Flow with Proof Key for Code Exchange (PKCE) を参照してください。ネイティブアプリ、モバイルアプリ、またはシングルページアプリにログインを追加する方法については、Add Login Using Authorization Code Flow with PKCE を参照してください。
- Auth0 Mobile SDKs と Auth0 Single-Page App SDK: フローを実装する最も簡単な方法です。実装に必要な作業の大部分を SDK が処理します。モバイル クイックスタート と シングルページアプリ クイックスタート では、手順を順を追って説明しています。
- Authentication API: 独自のソリューションを構築したい場合は、このまま読み進めて API を直接呼び出す方法を確認してください。
前提条件
-
Auth0 にアプリケーションを登録する。
- アプリケーションの種類に応じて、Application Type で Native または Single-Page App を選択します。
- Allowed Callback URL に
{yourCallbackUrl}を追加します。コールバック URL の形式は、アプリケーションの種類とプラットフォームによって異なります。アプリケーションの種類およびプラットフォームごとの形式について詳しくは、Native/Mobile クイックスタート と Single-Page App クイックスタート を参照してください。 - アプリケーションの Grant Types に 認可コード が含まれていることを確認します。手順については、Grant Types を更新する を参照してください。
- アプリケーションでリフレッシュトークンを使用できるようにするには、アプリケーションの Grant Types に リフレッシュトークン が含まれていることを確認します。手順については、Grant Types を更新する を参照してください。リフレッシュトークンの詳細については、Refresh Tokens を参照してください。
-
Auth0 に API を登録する
- API が以前のトークンの有効期限が切れたときに新しいトークンを取得できるよう、API でリフレッシュトークンを受け取れるようにするには、Allow Offline Access を有効にします。
手順
- code verifier を作成:
トークンをリクエストするために Auth0 に送信する
code_verifierを生成します。 - code challenge を作成:
Auth0 に送信して
authorization_codeをリクエストするためのcode_challengeを、code_verifierから生成します。 - ユーザーを認可:
ユーザーの認可を取得し、
authorization_codeとともにアプリへリダイレクトします。 - トークンをリクエスト:
authorization_codeとcode_verifierを使ってトークンを取得します。 - API を呼び出す: 取得したアクセストークンを使用して API を呼び出します。
- トークンを更新: 既存のトークンの有効期限が切れたら、リフレッシュトークンを使用して新しいトークンをリクエストします。
code verifier を作成する
code_verifier を作成します。これは、後でトークンをリクエストするために Auth0 に送信する、暗号学的にランダムな Base64 エンコード済みのキーです。
JavaScript サンプル
Java の例
Android のサンプル
Swift 5 のサンプル
Objective-C のサンプル
code challenge を生成する
authorization_code をリクエストするため、code_verifier から code_challenge を生成します。
Javascript サンプル
Java サンプル
Swift 5 のサンプル
Objective-C の例
code_verifier と code_challenge を作成したら、ユーザーの認可を得る必要があります。技術的には、これは の始まりであり、このステップには次のプロセスのうち 1 つ以上が含まれる場合があります。
- ユーザーを認証する。
- 認証を処理するため、ユーザーを にリダイレクトする。
- アクティブな シングルサインオン (SSO) セッションを確認する。
- 以前に同意が与えられていない場合は、要求された権限レベルに対するユーザーの同意を取得する。
code_challenge と、code_challenge の生成に使用したメソッドを含めます。
パラメーター
- パラメーターを含める必要があります
- 対象 API でサポートされている追加のスコープを含めることもできます
例として、API を呼び出す際の認可 URL 用 HTML スニペットは次のようになります。
レスポンス
HTTP 302 レスポンスが返されます。認可コードは URL の末尾に含まれます。
トークンを要求する
code) を使用し、code_verifier を含めて トークンURL に POST します。
トークン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 も含まれます。