Lambdaオーソライザー(TOKEN型 vs REQUEST型)難易度 標準無料
開発者が、クエリ文字列パラメータ・複数のヘッダー・ステージ変数など複数の値を組み合わせて認可判定を行うLambdaオーソライザーを実装したい(単一のBearerトークンのみでは判定できない)。選ぶべきLambdaオーソライザーのタイプを選べ。(単一選択)
- ATOKEN型のLambdaオーソライザーを作成し、
identitySourceにAuthorizationヘッダーのみを指定する - BREQUEST型のLambdaオーソライザーを作成し、
identitySourceに必要な複数のヘッダー・クエリ文字列パラメータを指定する - CCognitoオーソライザーを作成し、複数のヘッダーとクエリ文字列パラメータをすべてスコープとして登録する
- DIAM認可(
AWS_IAM)を有効化し、SigV4署名にクエリ文字列パラメータとヘッダーの値を埋め込んで判定させる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:BAI作成・独立検証済
解説
Lambdaオーソライザーには2つのタイプがある。
- TOKEN型:単一のトークン値(例:
Authorizationヘッダー)だけをLambdaオーソライザーに渡す。単純なBearerトークン検証に向く。 - REQUEST型:ヘッダー・クエリ文字列パラメータ・パスパラメータ・ステージ変数・リクエストコンテキストなど、
複数の入力値を組み合わせてLambdaオーソライザーに渡せる。
identitySourceで参照する値を指定する。
本設問のように複数の情報源を組み合わせた認可判定が必要な場合はREQUEST型を選ぶ。 なお、いずれのタイプでもLambdaオーソライザーはIAMポリシードキュメント(およびオプションでコンテキスト)を返す点は共通である。
- ATOKEN型は単一の値(通常は1つのヘッダー)のみを渡す設計であり、複数の入力を組み合わせた判定には対応しない。
- CCognitoオーソライザーは組み込みでCognitoユーザープールのJWTのみを検証する仕組みであり、任意の複数値を組み合わせる自由な判定ロジックは実装できない。
- DIAM認可はIAMプリンシパルの権限に基づく判定でありSigV4署名の検証はAPI Gateway/IAM側の仕組みに委ねられる。任意のカスタムロジックで複数値を組み合わせる用途には向かない。
ひっかけ: 「Lambdaオーソライザーは常にTOKEN型(Authorizationヘッダーのみ)」という思い込みに注意。
複数の値(クエリ文字列・複数ヘッダー等)を使いたい場合はREQUEST型を選ぶ必要がある。TOKEN型では単一の値しか
identitySourceに指定できない。AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)