AWS API Gateway の Lambda Authorizer には、大きく分けて
- Token-based Lambda Authorizer
- Request-based Lambda Authorizer
の 2 種類があります。
違いを整理しますね👇
① Token-based Lambda Authorizer
-
想定ユースケース
- API 呼び出し時に、Authorization ヘッダー(例: JWT、OAuth2 アクセストークン、カスタムトークン)を使って認証するケース。
-
入力情報
- 通常は
Authorizationヘッダーの値のみ。
- 通常は
-
仕組み
- クライアントが API Gateway を呼び出すときに、HTTP ヘッダーにトークンを含める。
- API Gateway がそのトークンを Lambda Authorizer に渡す。
- Lambda がトークンを検証し、IAM ポリシーを返す。
👉 シンプルで高速。JWT などトークンの検証に向いている。
② Request-based Lambda Authorizer
-
想定ユースケース
- トークン以外の情報も含めて認証・認可したいケース(例: クエリパラメータ、ヘッダーの複数項目、リクエストパスの一部)。
-
入力情報
- ヘッダー、クエリ文字列、ステージ変数、コンテキスト変数など リクエスト全体から任意の項目 を渡せる。
-
仕組み
- API Gateway が指定したヘッダーやパラメータをまとめて Lambda Authorizer に渡す。
- Lambda がそれを元にユーザーの認証・認可を判断し、IAM ポリシーを返す。
👉 柔軟性が高い。カスタム認証や複雑なアクセス制御に向いている。
🔑 まとめ
| 種類 | 入力 | 特徴 | 主な用途 |
|---|---|---|---|
| Token-based | 主に Authorization ヘッダー(トークン) |
シンプル・高速 | JWT / OAuth2 トークン検証 |
| Request-based | ヘッダー・クエリ・ステージ変数などリクエストの任意の要素 | 柔軟・多用途 | カスタム認証・複数条件チェック |