LoginSignup
2
1

More than 5 years have passed since last update.

API Gateway カスタム認証のエラーレスポンスをカスタマイズする

Last updated at Posted at 2017-02-18

普通に使うとエラーレスポンスが固定になる

API Gateway カスタム認証 (Custom Authorizers) において、トークンが不正な場合は context.fail("Unauthorized") のようにエラーを返すのが一般的だろう。公式ドキュメントの例でもそうなっている。

しかし、その方法だとエラーレスポンスが「401 Unauthorized」に固定化されてしまう。提供したいAPIの要件によっては、任意のステータスコードやレスポンスボディを使いたいことがある。

この問題はAWSのフォーラムでも話題になっている。下記は一例。

このやりとりを見ると将来的には改善されそうだが、時期はわからない。

カスタマイズする方法

ただし現状でも、下記のように実装すればカスタマイズ可能である。

  1. Custom Authorizer のレスポンスは常に認証OKとする。かわりに実際の認証結果をレスポンスの context に含める(参考:Amazon API Gateway カスタム認証からの出力)。ここでは例として context.validToken に含めることにする
  2. 統合リクエストで $context.authorizer.validToken の値をマッピングする(参考:$context 変数へのアクセス
  3. バックエンドはマッピングされた値を参照し、認証結果に応じたレスポンスを返す
  4. 統合レスポンスで、3の内容に応じた任意のステータスコードやレスポンスボディをマッピングする

この方法を採用すべきかどうかは状況による。ただ、選択肢のひとつとして知っておいて損はない。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1