アクセストークンを検証する

アクセストークンは、API向けなので、意図されたAPIによってのみ検証されなければなりません。

検査内容が1つでも失敗すると、トークンを無効であると見なして、要求を必ず401 Unauthorizedの結果で拒否します。

  1. 標準のJWT検証を行います。アクセストークンはJWTであるため、標準のJWT検証手順を実行する必要があります。詳細については、「JSON Web Tokenを検証する」を参照してください。

  2. トークンのオーディエンスクレームを検証します。標準のJWT検証を行ったのであれば、すでにJWTのペイロードをデコードし、その標準クレームを確認したはずです。トークンのオーディエンスクレーム(aud、文字列の配列)は当初のトークン要求に依存します。audフィールドには、カスタムAPIに対応するオーディエンスと/userinfoエンドポイントに対応するオーディエンスの両方を含めることができます。トークンの少なくとも1つのオーディエンス値が、対象APIの一意の識別子と一致しなければなりません。この識別子はAPIの設定[Identifier(識別子)]フィールドで定義されています。詳細については、「アクセストークンを取得する」を参照してください。

  3. 権限(スコープ)を確認します。APIへのアクセスに必要な権限がアプリケーションに付与されていることを確認しますこれを行うには、JWTのペイロードでscopeクレーム(scope、スペース区切りの文字列リスト)を確認する必要があります。アクセスするエンドポイントで求められる権限と一致している必要があります。たとえば、カスタムAPIがユーザーレコードの読み取り・作成・削除用に3つのエンドポイントを提供している場合は、Auth0でAPIを登録した際に対応する3つの権限が作成されています。

    1. create:users/createエンドポイントにアクセスできるようにします

    2. read:users/readエンドポイントにアクセスできるようにします

    3. delete:users/deleteエンドポイントにアクセスできるようにします

    この場合、アプリケーションは/createエンドポイントにアクセスを要求しますが、 アクセストークンのscopeクレームにcreate:usersが含まれていないため、APIが要求を拒否します。

もっと詳しく