【AWS】Cognito でLambdaアクセス認可(Cors対応)
1. 使用するサービス
(AWS)
- Lambda
- Cognito
2. 概要
ApiGatewayの認可機能の1つとしてCognitoを選択できます。その設定の仕方とcorsを適用している場合のレスポンスの留意点を説明します。
前提としてCognitoで既にユーザプールは作成済とします。
3. 実装
3-1. Authorizer作成
ApiGatewayから認可機能をつけるApiを選択し、Authroizer項目を選択します。
Cognito User Poolには事前に作成したUser Poolが選択できるはずなので、それを選んでください。
3-2. メソッドに対して認証をつける
認可機能を付与したいメソッドのリクエストを選択し、Authorizationに作成したAuthorizerを選択します。
3-3. 認可確認
以上の設定で、クライアントの通信するヘッダにAuthorizationを付与し、値に事前にCognitoへの認証で得たidTokenを入れます。
認可が成功すると、ApiGatewayで設定した通りにレスポンスが返ってきます。主にCorsの部分が気になると思います。
認可が正しくできた場合はCorsが上手く機能しますが、認可が失敗した場合は恐らく403のCorsエラーが出るかと思います。
よく見るエラーかと思います。
原因としては認可失敗の場合、Access-Control-Allow-Origin Headerが無いからである。
これにより、認可失敗の場合でも正しい形でレスポンスを遅れます。これが無いとクライアント側は何故エラーがあったのか(Unauthorized)がわかりません。