質問: AWSのAPI GateWayで作成したAPIに認証をつけようと検討しています。 マニュアルなどを見ながら、Amazon Cognitoのユーザプール(ユーザプール1)に登録されたユーザのみがアクセスできるようにはできましたが、例えば他のユーザプール(ユーザプール2、3・・・)に登録されたユーザからの認証を受け付けるように設定することはできるのでしょうか? AWS ConsoleからAPI GateWay オーソライザーを利用しているのですが、画面から設定できるのは1つのユーザプールのみで、API1つにつき、1つのユーザプールしか指定できないのか悩んでおります。 やりたいこととしては、 API1にアクセスできるのはユーザプール1、ユーザプール3 API2にアクセスできるのはユーザプール1、ユーザプール2、ユーザプール3 という風に複数cognitoの認証元を指定できるようにすることです。 どなたかご教示いただける助かります。
回答: API Gatewayの画面で、Cognito User Poolの指定のみでやろうとするのであれば、出来ないと思います。 ただ、ご自身で管理しているユーザープールであるならばそもそもなぜ複数のユーザープールを作る必要があるのか?と思ってしまいます。 さて、似たような事をどうするのか?ですが、下記の条件でよいですか? 1) ユーザープールを使う必要がある 2) ユーザーログイン時にIAMロールの割り当てを使わない この場合、 ユーザープールのユーザーのログインをサーバー側で行うようにして、その際に自作のトークンを返します。トークンはJSON Web Tokenでいいかと思います。 そして、API Gatewayの認可の設定はカスタムオーソライザーとします。そのカスタムオーソライザーでトークンを検証し正しいトークンであれば、どのAPIにアクセスしてよいかをAPI Gatewayに返答します。トークン作成時にどのAPIにアクセス出来るのか分かる情報を埋めておくのか、トークンにはIDとユーザープールの情報だけで、認可時にDynamoDB等を利用するのかは判断が分かれるところかと思います。 このやり方ですと、ユーザープールが複数あっても出来ますが、ユーザープールが一つでもそのユーザーによって判別する事も可能です。