API Gateway Lambdaオーソライザで任意のエラーレスポンスを返却する

AWS

Lambdaオーソライザで認証結果に応じて
任意のステータスコードやエラーメッセージを返却する方法です。

返却可能なステータスコード

ステータスコード 200, 401, 403, 500 を返却することが可能です。

ステータスコードですが通常のLambdaのように直接ステータスコードを
返却することは出来ません。以下の方法でステータスコードを制御します。
・Allow IAMポリシーを返却 → 200 OK レスポンスが返却される。
・Deny IAMポリシーを返却 → 403 Forbidden レスポンスが返却される。
・’unauthorized’トークンを返却 → 401 Unauthorized レスポンスが返却される。
・上記以外のトークンを返却 → 500 Invalid token レスポンスが返却される。

エラーメッセージのカスタマイズ

403レスポンス返却時は、contextを利用することで対応が可能です。
DenyのIAMポリシーの中で設定したcontextオブジェクトの情報は、
ゲートウェイレスポンスにてアクセスすることが可能です。

(例)
Lambdaオーソライザーでcontextオブジェクトに以下の内容を設定します。

    authResponse.context = {
        "stringKey": "stringval"
    };

認証が失敗した場合のゲートウェイレスポンスのレスポンステンプレートで “string_message”:”$context.authorizer.stringKey”
という設定を行い、設定したメッセージを参照します。
これでLambdaオーソライザーで設定したメッセージがレスポンスとして
返却されるので、あとはクライアントでこのメッセージを参照すればOKです。

以上

タイトルとURLをコピーしました