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の呼び出しサンプル

参考にした資料
[slideshare id=78350575&doc=srv409deepdiveonmicroservicesanddocker-170728172219]

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

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

コメント

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