アクセストークン

Overview

重要なコンセプト

  • トークンベースの認証について詳細を確認する

  • Auth0が標準クレームでJSON構造に準拠した自己完結型JSON Web Token (JWT)アクセストークンを使う仕組みを理解する

  • 提供されたアクセストークンのサンプルと必要なパラメーターを確認する

  • デフォルトに基づいてアクセストークンのライフタイムを設定する

トークンベースの認証では、アプリケーションによるAPIへのアクセスを許可するためにアクセストークンが使用されます。ユーザーが認証とアクセス認可に成功すると、アプリケーションはアクセストークンを受け取り、ターゲットのAPIを呼び出す際にそれを資格情報として渡します。渡されたトークンは、APIに、トークンの所持者がAPIへのアクセスを認可されていること、認可の際に付与されたスコープ で指定されている特定のアクションの実行を認可されていることを知らせます。

また、ユーザーに対してFacebookなどの IDプロバイダー(IdP)を介したログインを許可した場合、アプリケーションは、IdP発行の独自のアクセストークンによってIdPのAPIの呼び出しを許可されます。たとえば、ユーザーがFacebookを使用して認証する場合は、Facebook発行のアクセストークンを使ってFacebook Graph APIを呼び出します。これらのトークンは、IdPが制御するものであり、任意の形式で発行されます。詳細は、「IDプロバイダーのアクセストークン」を参照してください。

不透明なアクセストークン

不透明なアクセストークンとは、アクセス不可能な独自形式のトークンで、一般的にはサーバーの永続ストレージにある情報のIDを含みます。不透明トークンを検証するには、トークンの受信者がトークンの発行サーバーを呼び出す必要があります。

Auth0の場合、不透明トークンは、ユーザーのプロファイルを返すために/userinfoエンドポイントと共に使用されることがあります。不透明なアクセストークンを受け取ったら、それを検証する必要はありません/userinfoエンドポイントを使用すれば、後の処理はAuth0が行います。詳細については、「アクセストークンを取得する」をお読みください。

JWTアクセストークン

JSON Web Token(JWT)のアクセストークンは、JWT標準に準拠し、エンティティに関する情報をクレームの形で含みます。自己完結型であるため、受信者はサーバーを呼び出してトークンを検証する必要がありません。

Management APIのために発行されたアクセストークンと、Auth0に登録したカスタムAPIのために発行されたアクセストークンは、JWT標準に従います。つまり、基本構造が一般的なJWT構造に準拠し、トークン自体についてアサートされた標準のJWTクレームを含みます。

Management APIのアクセストークン

Auth0 Management APIのために発行されたアクセストークンは、(実態はどうであれ)不透明として扱われるため、検証する必要はありません。Auth0 Management APIで使用すれば、後の処理はAuth0が行います。詳細については、「Auth0 Management APIのトークン」を参照してください。

カスタムAPIのアクセストークン

カスタムAPIのアクセストークンが検証に失敗する場合は、カスタムAPIでaudienceとして発行されたことを確認します。詳細については、「アクセストークンを取得する」をお読みください。

アクセストークンのサンプル

これは、アクセストークンの内容を示す例です。トークンに含まれる認可情報は、アプリケーションがそのAPIで実行を許可されているアクションに関するもののみです(そのような許可をscopesと呼びます)。

{
  "iss": "https://my-domain.auth0.com/",
  "sub": "auth0|123456",
  "aud": [
    "https://example.com/health-api",
    "https://my-domain.auth0.com/userinfo"
  ],
  "azp": "my_client_id",
  "exp": 1311281970,
  "iat": 1311280970,
  "scope": "openid profile read:patients read:admin"
}

Was this helpful?

/

トークンには、ユーザーID(subクレームにある)以外の、ユーザーに関する情報は含まれません。しかし、その他のユーザー情報が取得できれば便利なケースも多いでしょう。これは、アクセストークンでuserinfo APIエンドポイントを呼び出すことで行えます。アクセストークン発行の対象となるAPIでRS256署名アルゴリズムが使われていることを確認します。

アクセストークンのセキュリティ

アクセストークンを使用する際には、トークンのベストプラクティスに従い、JWTについては、その内容が信頼できると仮定する前に、必ずアクセストークンを検証してください。

アクセストークンのライフタイム

カスタムAPIトークンのライフタイム

カスタムAPIのアクセストークンの有効期間は、デフォルトで86400秒間(24時間)です。APIのセキュリティ要件に従ってトークンの有効期間を設定することをお勧めします。たとえば、バンキングAPIにアクセスするアクセストークンは、To-Do APIにアクセスするものより有効期限を短くします。詳細については、「アクセストークンのライフタイムを更新する」をお読みください。

/userinfoエンドポイントのトークンのライフタイム

OIDC /userinfoエンドポイントへのアクセスのみを目的として発行されたアクセストークンには、デフォルトのライフタイムがあり、変更はできません。ライフタイムの長さは、トークンを使用する際のフローによって異なります。

フロー ライフタイム
暗黙 7200秒(2時間)
認可コード/ハイブリッド 86400秒(24時間)

もっと詳しく