Amazon web services 如何在AWS Lambda中获取validate Cognito访问令牌以允许网关API调用?

Amazon web services 如何在AWS Lambda中获取validate Cognito访问令牌以允许网关API调用?,amazon-web-services,aws-lambda,aws-api-gateway,amazon-cognito,Amazon Web Services,Aws Lambda,Aws Api Gateway,Amazon Cognito,我试图做的是为我的Lambda函数设置API网关,它在DynamoDB中保存了一些内容(或者我只想为登录用户保存的其他内容)。但我不知道如何验证AccessToken以及如何从中获取用户 我在AWS论坛上发现了这一点,我决定尝试方法1 Cognito用户池+API网关+API网关自定义授权器+Cognito用户池访问令牌 因此,现在我已登录用户: var authenticationData = { Username : 'username', // your username here

我试图做的是为我的Lambda函数设置API网关,它在DynamoDB中保存了一些内容(或者我只想为登录用户保存的其他内容)。但我不知道如何验证AccessToken以及如何从中获取用户

我在AWS论坛上发现了这一点,我决定尝试方法1

Cognito用户池+API网关+API网关自定义授权器+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());
....
还有他的代币。我还在API调用中设置了自定义API网关自定义授权器


现在我应该验证访问令牌并决定是允许还是拒绝方法调用。但我不明白如何做到这一点,以及如何从令牌中检索用户

请看一下这篇博文中的示例代码:

您不需要API网关自定义授权程序。。。只需验证API端点—转到其方法请求并选择AWS_IAM进行授权下拉列表。。其中默认情况下未选择任何选项

当访问令牌被发送到此端点时,它将自动检查访问令牌角色(在与cognito服务通信之后),并检查与该角色附加的策略

如果IAM策略允许调用此端点,AWS API将进一步执行它,否则它将返回403错误或某些错误


您不需要编写任何代码-除非您要应用一些完全不同的身份验证逻辑-这可以通过“API网关自定义授权器”来实现,用于Cognoto用户池+API网关+API网关自定义授权器+Cognoto用户池访问令牌

您应该创建Cognito Authorizer(在创建自定义授权器时作为选项提供)并链接您的用户池和标识池,然后客户端需要发送idToken(使用用户池SDK生成)以访问端点。这个idToken将通过Coginito Authorizer(在Authorization Method下拉列表中使用)由Cognito标识池进行验证


SDK生成的idToken可以使用另一个lambda+端点(如登录端点)完成,也可以使用cognito mobile SDK生成。

谢谢,这很有帮助。