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です。
以上