2017-12-05 2 views
0

私たちは、アクセスを許可したいユーザを含むCognito User PoolをAPIに用意しています。 APIはラムダ関数を使用してエンドポイントを処理します。 Cognitoプールは、カスタムフィールドrolesで構成されています。このフィールドは、ユーザーが所有する役割のカンマ区切りリストです。AWS Cognito認証でカスタム認証ロジックを使用する

まず、Cognito認証が行われるようにします(ユーザーがGoogleのプールに所属し、資格情報が有効かどうかを判断する)。そして、我々は何らかの理由で、実行するためのカスタムロジックを実行して、クレームを通じて受け取るrolesフィールドを調べ、内部ビジネスロジックに基づいてリクエストを許可または拒否します。

カスタム・オーソライザを使用してこのロジックを実装し、エンドポイントの認可者として設定しようとしました。次に、この認可関数のCognito認可を有効にしました。問題は、Cognitoがラムダ関数自体ではなくAPIエンドポイントを保護するため、APIエンドポイントがヒットしてカスタムオーソライザが呼び出されたときにCognito認証が実行されないことです。

Cognito認証でカスタムロジックを使用するという目標を達成するにはどうすればよいですか?この点についての助力は高く評価されます。

+0

「CognitoはAPIエンドポイントを保護してラムダ機能を保護していないため、APIエンドポイントがヒットしてカスタムオーソライザが呼び出されたときにCognito認証が実行されないという問題があります。 – Ashan

+0

ラムダ認定は、APIゲートウェイ経由でCognito認可で保護されています。 (HTTPイベント)。しかし、カスタムオーソライザー設定(REQUESTイベントタイプ)で実行しています。したがって、カスタム認可者を実行する前に、Cognito認可はまったく呼び出されません。 –

答えて

0

$context.authorizer.claims.propertyの下にコグニト認定を使用している場合は、ラムダ関数に渡すことができるコンテキストでユーザーのトークンのすべてを使用できます。ラムダ関数にクレームし、そのロールが存在することを確認するあなたのラムダの始まりはあなたのために働くのですか?

関連する問題