LoginSignup
2
2

More than 1 year has passed since last update.

API Gateway JWT Authorizerメモ

Posted at

JWT Authorizerとは

  • クライアントが API リクエストとともに送信する JWT を検証するAPI Gatewayの認証機能

    • トークンの検証、およびオプションでトークン内のスコープに基づいてリクエストを許可または拒否する

JWT Authorizer 認証の流れ

jwt_authorizer.png

  1. トークン発行者(認可サーバー)によって提供されるJWT形式のトークンを含んだHTTPリクエストが行われる

  2. API Gatewayがリクエストを受信し、API Gatewayは検証のためにトークンをJWT Authorizerに渡す

    • identitySource に指定されたトークンを取得する

    • identitySourceにはトークンのみを含めるか、Bearer のプレフィックスが付いたトークンのみを含めることができる

  3. JWT Authorizerは認可サーバーのJWKSエンドポイント(jwks_uri) から公開鍵を取得する

  4. 認可サーバーは公開鍵を返却する

  5. JWT AuthorizerはJWTトークンを取得した公開鍵を使用して署名を検証し、その後クレームを検証する

    • kid :トークンに署名した jwks_uri のキーと一致すること
    • iss : オーソライザーに設定された issuer と一致すること
    • aud または client_id : オーソライザーに設定された audience エントリーに含まれること
    • exp : 現在時刻(UTC)より後であること
    • nbf : 現在時刻(UTC)より前であること
    • iat : 現在時刻(UTC)より前であること
    • scope または scp : ルートの authorizationScopes のスコープを少なくとも 1 つ含んでいること
      ※いずれかの検証手順に失敗した場合、API Gateway は API リクエストを拒否する
  6. (トークンの検証に成功した場合、)API GatewayはLambdaを実行する

JWT Authorizer設定の大まかな流れ

※API Gateway HTTP API及びそのバックエンドに設定するlambda関数は作成済みであること

  1. JWT Authorizerを作成する
    • Authorizer名、JWTのトークンを取得先、Issuer、Audienceを設定する
  2. JWT AuthorizerをAPIにアタッチする

JWTトークンのクレームへのアクセス

  • JWT トークンのクレームには、Lambda 関数などのバックエンドリソースがアクセスできる
  • 例:
    • $event.requestContext.authorizer.jwt.claims.クレーム名

参考情報

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2