私たちは、アクセスを許可したいユーザを含むCognito User PoolをAPIに用意しています。 APIはラムダ関数を使用してエンドポイントを処理します。 Cognitoプールは、カスタムフィールドroles
で構成されています。このフィールドは、ユーザーが所有する役割のカンマ区切りリストです。AWS Cognito認証でカスタム認証ロジックを使用する
まず、Cognito認証が行われるようにします(ユーザーがGoogleのプールに所属し、資格情報が有効かどうかを判断する)。そして、我々は何らかの理由で、実行するためのカスタムロジックを実行して、クレームを通じて受け取るroles
フィールドを調べ、内部ビジネスロジックに基づいてリクエストを許可または拒否します。
カスタム・オーソライザを使用してこのロジックを実装し、エンドポイントの認可者として設定しようとしました。次に、この認可関数のCognito認可を有効にしました。問題は、Cognitoがラムダ関数自体ではなくAPIエンドポイントを保護するため、APIエンドポイントがヒットしてカスタムオーソライザが呼び出されたときにCognito認証が実行されないことです。
Cognito認証でカスタムロジックを使用するという目標を達成するにはどうすればよいですか?この点についての助力は高く評価されます。
「CognitoはAPIエンドポイントを保護してラムダ機能を保護していないため、APIエンドポイントがヒットしてカスタムオーソライザが呼び出されたときにCognito認証が実行されないという問題があります。 – Ashan
ラムダ認定は、APIゲートウェイ経由でCognito認可で保護されています。 (HTTPイベント)。しかし、カスタムオーソライザー設定(REQUESTイベントタイプ)で実行しています。したがって、カスタム認可者を実行する前に、Cognito認可はまったく呼び出されません。 –