API Gatewayで保護されたREST APIを構築しています。クライアントはリクエストのAuthorizationヘッダーにカスタムOAuthトークンを含め、そのトークンを社内の外部OAuthサーバーで検証するカスタム認証ロジックを実装したいと考えています。どのオーソライザーを使用すべきですか?
IAM Authorizer:クライアントに AWS 署名バージョン4(SigV4)でリクエストに署名させ、IAM ポリシーに基づいてアクセス制御を実施する
AWS 署名バージョン4(SigV4)によるリクエスト署名が必要で、AWS SDK または IAM 認証情報を持つクライアントが対象。カスタム OAuth トークンを扱うユースケースには適していない。
解説
API GatewayのLambda Authorizerには2種類あります。TOKEN型はAuthorizationヘッダー(またはカスタムヘッダー)のトークンのみをLambdaに渡すシンプルな形式で、外部OAuthサーバーへのトークン検証に最適です。いずれのLambda AuthorizerもIAMポリシーを返し、API Gatewayがアクセス判定します。TTLを設定するとポリシーがキャッシュされAPIコールを削減できます。
選択肢BのREQUEST型はヘッダー・クエリ・パスなど複数の入力値をもとにオーソライズしたい場合に使用します。
選択肢CのCognito User Pool AuthorizerはCognito発行のJWTのみ検証可能で外部OAuthサーバーには対応していません。
選択肢DのIAM AuthorizerはAWS署名バージョン4(SigV4)でのリクエスト署名が必要であり、カスタムOAuthトークン検証には適していません。