アクセストークンを検証する
アクセストークンは、API向けなので、意図されたAPIによってのみ検証されなければなりません。
検査内容が1つでも失敗すると、トークンを無効であると見なして、要求を必ず401 Unauthorized
の結果で拒否します。
標準のJWT検証を行います。アクセストークンはJWTであるため、標準のJWT検証手順を実行する必要があります。詳細については、「JSON Web Tokenを検証する」を参照してください。
トークンのオーディエンスクレームを検証します。標準のJWT検証を行ったのであれば、すでにJWTのペイロードをデコードし、その標準クレームを確認したはずです。トークンのオーディエンスクレーム(
aud
、文字列の配列)は当初のトークン要求に依存します。aud
フィールドには、カスタムAPIに対応するオーディエンスと/userinfo
エンドポイントに対応するオーディエンスの両方を含めることができます。トークンの少なくとも1つのオーディエンス値が、対象APIの一意の識別子と一致しなければなりません。この識別子はAPIの設定の[Identifier(識別子)]フィールドで定義されています。詳細については、「アクセストークンを取得する」を参照してください。権限(スコープ)を確認します。APIへのアクセスに必要な権限がアプリケーションに付与されていることを確認しますこれを行うには、JWTのペイロードで
scope
クレーム(scope
、スペース区切りの文字列リスト)を確認する必要があります。アクセスするエンドポイントで求められる権限と一致している必要があります。たとえば、カスタムAPIがユーザーレコードの読み取り・作成・削除用に3つのエンドポイントを提供している場合は、Auth0でAPIを登録した際に対応する3つの権限が作成されています。create:users
は/create
エンドポイントにアクセスできるようにしますread:users
は/read
エンドポイントにアクセスできるようにしますdelete:users
は/delete
エンドポイントにアクセスできるようにします
この場合、アプリケーションは
/create
エンドポイントにアクセスを要求しますが、 アクセストークンのscope
クレームにcreate:users
が含まれていないため、APIが要求を拒否します。