当前位置: 首页 > 知识库问答 >
问题:

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

况庆
2023-03-14

我想做的是设置我的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网关自定义授权程序。

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

共有3个答案

李意致
2023-03-14

对于Cognito用户池API网关API网关自定义授权程序Cognito用户池访问令牌

您应该创建Cognito Authorizer(在创建自定义授权者时作为选项提供),并链接您的用户池

通过SDK生成的idToken可以使用另一个lambdaendpoint(如登录endpoint)来完成,也可以使用认知移动sdk来生成。

祁远
2023-03-14

您不需要API网关自定义授权程序。。。只是为了验证一个APIendpoint——转到它的方法请求,并选择AWS_IAM作为授权下拉列表。。默认情况下未选择任何选项。。。

当访问令牌发送到该终端时,它将自动检查访问令牌角色(在与认知服务通信后),并检查与角色相关的策略。

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

您不需要编写任何代码——除非您要应用一些完全不同的身份验证逻辑——这可以通过“API网关自定义授权程序”来实现

罗心思
2023-03-14

请看一下这篇博文中的示例代码:https://mobile.awsblog.com/post/Tx3JK25U7Z9EUIU/Integrating-Amazon-Cognito-User-Pools-with-API-Gateway

 类似资料:
  • 此url位于AWS API网关中,方法为get,stage部署良好。我在aws文档之后启用了CORS。 -资源->操作->启用CORS->默认设置->启用CORS并替换CORS头。在CORS结果中没有错误日志。 我不是profesional web开发人员,我的浏览器是Safari。 以下是我查询“http://my.com”的代码 控制台打印错误:XMLHttpRequest不能加载“http:

  • 问题内容: 遵循Restangular的文档,并包括以下示例: 我正在为angel.co做同样的事情 并不断出错 有什么办法吗? 问题答案: 服务器(api.angel.co)没有响应Access-Control标头,这导致此错误。 将XHR请求发送到与原始域不同的域时,Web浏览器正在检查服务是否允许这样做。在您的情况下,api.angel.co将需要在响应中包含标头(不是)。 假设您不能更改a

  • 下面是security.xml文件,我正在使用它合并spring-security-oauth2。 我必须在spring-security.xml文件中做哪些更改,以便在JSON中发送查询参数?

  • 我已经看了几天Spotify api和示例源代码,但我仍然不知道如何获得访问令牌来访问用户的播放列表数据。我已经到了打开登录窗口,用户登录,然后我收到授权码的地步。此时,我尝试做如下事情: 和 但是不管怎样,我得到的结果是: 而不是代币。我肯定这很简单,但我不擅长JS。请帮忙!谢谢! (编辑)我忘了提: api认证指南链接:https://developer.spotify.com/web-api

  • 已设置Hashicorp Vault docker容器,但在使用生成的令牌而不是根时,似乎无法获取数据库凭据。 重新创建的步骤: 我创建了最新的容器,获得了根令牌并使用它进行身份验证。 运行以下命令: 我还尝试将“vault write”替换为“vault kv put”,并成功执行所有命令。 所以我叫GEThttp://127.0.0.1:8200/v1/database/creds/Tenan

  • 我正在开发桌面应用程序使用谷歌驱动器API。我用的是C#。在登录阶段,在登录并允许访问后,我收到授权码,要求我复制粘贴到我的应用程序中,以交换授权码来访问令牌。是否有另一种方法来接收访问令牌,而不需要用户复制和粘贴授权代码。 提前感谢莫兰