44498
AWSのAPI GateWayで作成したAPIに認証をつけようと検討しています。  
マニュアルなどを見ながら、Amazon
Cognitoのユーザプール（ユーザプール１）に登録されたユーザのみがアクセスできるようにはできましたが、例えば他のユーザプール（ユーザプール２、３・・・）に登録されたユーザからの認証を受け付けるように設定することはできるのでしょうか？  
AWS ConsoleからAPI GateWay
オーソライザーを利用しているのですが、画面から設定できるのは１つのユーザプールのみで、API１つにつき、１つのユーザプールしか指定できないのか悩んでおります。

やりたいこととしては、  
API１にアクセスできるのはユーザプール１、ユーザプール３  
API２にアクセスできるのはユーザプール１、ユーザプール２、ユーザプール３  
という風に複数cognitoの認証元を指定できるようにすることです。

どなたかご教示いただける助かります。
CC BY-SA 4.0
2018-06-03T02:58:59.463
44488
2018-06-04T11:25:14.687
20482
question
aws api aws-lambda aws-cli aws-iam
Amazon Cognitoのユーザプールについて
API Gatewayの画面で、Cognito User Poolの指定のみでやろうとするのであれば、出来ないと思います。  
ただ、ご自身で管理しているユーザープールであるならばそもそもなぜ複数のユーザープールを作る必要があるのか？と思ってしまいます。  
さて、似たような事をどうするのか？ですが、下記の条件でよいですか？  
1) ユーザープールを使う必要がある  
2) ユーザーログイン時にIAMロールの割り当てを使わない  
この場合、  
ユーザープールのユーザーのログインをサーバー側で行うようにして、その際に自作のトークンを返します。トークンはJSON Web Tokenでいいかと思います。  
そして、API
Gatewayの認可の設定はカスタムオーソライザーとします。そのカスタムオーソライザーでトークンを検証し正しいトークンであれば、どのAPIにアクセスしてよいかをAPI
Gatewayに返答します。トークン作成時にどのAPIにアクセス出来るのか分かる情報を埋めておくのか、トークンにはIDとユーザープールの情報だけで、認可時にDynamoDB等を利用するのかは判断が分かれるところかと思います。  
このやり方ですと、ユーザープールが複数あっても出来ますが、ユーザープールが一つでもそのユーザーによって判別する事も可能です。
CC BY-SA 4.0
2018-06-03T14:01:05.800
44498
2018-06-03T14:01:05.800
16785
44488
answer