メインコンテンツへスキップ
リフレッシュトークンは、ユーザーに再認証を求めることなく、ユーザーの新しいアクセストークンおよび/またはIDトークンを要求するために使用します。 通常、(サービスの中断を防ぐため)以前のアクセストークンが期限切れになる前に新しいアクセストークンを要求すべきですが、トークン交換には当社のレート制限ポリシーが適用されるため、API呼び出しのたびには行いません。 リフレッシュトークンは、ユーザーの新しいIDトークンを要求するためにも使用でき、IDトークン内のクレームをリフレッシュする必要がある場合には必ず使用します。

APIの呼び出し

認証中に受け取ったリフレッシュトークンを新しいアクセストークンと交換するには、Auth0 Authentication APIでそのトークン取得APIを呼び出します。 Authentication APIで使える認証方法の詳細は、「認証方法」をお読みください。

基本認証の使用

curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'authorization: Basic {yourApplicationCredentials}' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=refresh_token \
  --data 'client_id={yourClientId}' \
  --data 'refresh_token={yourRefreshToken}'

POST認証の使用

curl --request POST \
  --url 'https://{yourDomain}/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data grant_type=refresh_token \
  --data 'client_id={yourClientId}' \
  --data 'client_secret={yourClientSecret}' \
  --data 'refresh_token={yourRefreshToken}'

パラメーターの定義

パラメーター説明
grant_type実行する付与タイプ。
client_idアプリケーションのクライアントID。
client_secret(任意)アプリケーションのクライアントシークレット。POSTトークン認証方式を使用する機密アプリケーションにのみ必要です。
refresh_token交換するリフレッシュトークン。
応答には新しいアクセストークン、そのタイプ、そのライフタイム(秒)、および付与されたスコープが含まれます。最初のトークンのスコープにopenidが含まれている場合には、新しいIDトークンも応答に含まれます。
{
      "access_token": "eyJ...MoQ",
      "expires_in": 86400,
      "scope": "openid offline_access",
      "id_token": "eyJ...0NE",
      "token_type": "Bearer"
    }

MFAのバイパス

多要素認証(MFA)が有効で、リフレッシュトークンに失敗した場合は、以下の回避策があります。
exports.onExecutePostLogin = async (event, api) => {
  // This action will allow you to bypass the MFA logic for the refresh token exchange flow.

  if (event.transaction.protocol === "oauth2-refresh-token") {
    return;
  }

  //  Add your MFA logic
  //  For example: api.multifactor.enable("any");
};
現在のフローやプロトコルに応じて別途のロジックを実行やバイパスする必要がある場合には、サンプルコードをカスタマイズすることができます。

もっと詳しく

I