AWS API Gateway & Microservices on ECS

こういう構成のシステムを構築したいのだけどAPI Gatewayで認証をかけてもALBをpublicにしないといけないとかでそれも考慮が必要。
良いやり方がないか色々と試行錯誤をしてようやく1つできそうな方法を思いついたけれどこれがベストなのか不明。

figure1

今回、認証したいのはエンドユーザではなくAPIを利用するサーバ。
IP制限とかできれば良いのだけれど、それは難しいという要件。

その方法というのは以下の通り。
1. APIを利用するサーバはCognitoからtokenを取得
2. そのtokenをHTTPヘッダに付与してAPIをリクエスト
3. APIサーバ側ではそのトークン(JWT)の署名検証を行う

これをnginxのモジュールとして実装するか、Webアプリ側のfilterとして実装する想定。

イメージ図

署名検証用のlambda
https://github.com/awslabs/aws-support-tools/blob/master/Cognito/decode-verify-jwt/decode-verify-jwt.py

署名検証用のlambda functionの呼び出しサンプル

参考にした資料

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

新品価格
¥3,672から
(2018/7/16 22:10時点)

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください