1

私がしようとしているのは、DynamoDB(またはログインしているユーザーのみにしたい他のもの)に保存するラムダ関数のAPIゲートウェイを設定することです。しかし、私はAccessTokenを検証する方法とそれからユーザーを取得する方法を理解していません。AWS LambdaでCognitoアクセストークンを検証してゲートウェイAPI呼び出しを許可するにはどうすればよいですか?

私はAWSフォーラムでこのpostを発見し、私は1

Cognitoユーザープール+ APIゲートウェイ+ API Gatewayのカスタムオーソ+ Cognitoユーザープールアクセストークンアプローチをとることに決めました。

だから今、私はユーザーでログインした:

var authenticationData = { 
    Username : 'username', // your username here 
    Password : 'password', // your password here 
}; 
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); 

var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); 
cognitoUser.authenticateUser(authenticationDetails, { 
    onSuccess: function (result) { 
    console.log('access token + ' + result.getAccessToken().getJwtToken()); 
.... 

と彼accessTokenを。 API呼び出しでカスタムAPIゲートウェイカスタムオーソライザも設定しました。

ここで、アクセストークンを検証し、メソッド呼び出しを許可するか拒否するかを決定する必要があります。しかし、私はそれを行う方法とトークンからユーザーを取り出す方法を理解していませんか?

答えて

4

あなたがAPI Gatewayのカスタムオーソを必要としません...ちょうどAPIエンドポイントの認証に - 後藤に認証のためにそのメソッド要求を選択しAWS_IAMをドロップダウン..デフォルトでNONEが選択されています...

アクセストークンをこのエンドポイントに送信すると、アクセストークンロールが自動的にチェックされ(cognitoサービスと通信した後)、ロールに添付されているポリシーがチェックされます。

IAMポリシーは、このエンドポイントを呼び出すことができます場合 - AWS APIは、さらに他のそれを実行します、それは403エラーまたは何らかのエラー

バックあなたがスローされますあなたはどんなコードを書く必要はありません - あなたは、いくつかを持っていない限り適用する全く別の認証ロジック - 「API Gatewayのカスタムオーソ」を介して達成することができる

0

Cognitoユーザープール+ APIゲートウェイ+ API Gatewayのカスタムオーソ+ Cognitoユーザープールアクセストークン

のためにあなたがCognitoオーソを作成する必要があります(カスタムオーソライザを作成するときにオプションとして利用できます) r User pool &アイデンティティプール。次に、クライアントはエンドポイントにアクセスするためにidToken(User pool SDKを使用して生成)を送信する必要があります。このidTokenは、Coginito Authorizer(認可メソッドドロップダウンで使用)を介してCognito IDプールによって検証されます。

SDKで生成されたidTokenは、ログインエンドポイントのような別のラムダ+エンドポイントを使用して作成することも、cognito mobile sdkを使用して生成することもできます。

関連する問題