AWS Cognito 和 DynamoDB

Posted

技术标签:

【中文标题】AWS Cognito 和 DynamoDB【英文标题】:AWS Cognito and DynamoDB 【发布时间】:2021-06-23 10:54:49 【问题描述】:

我已经环顾四周,但对于一个看似非常简单的问题,我找不到(明确的)解决方案。

我正在尝试使用特定于用户的数据(例如,他们最喜欢的颜色等)创建一个数据库。使用 DynamoDB 创建它很好,编辑它也是如此;我的问题是首先识别用户(我正在使用 Cognito),我在任何地方都找不到安全且高效使用的“最佳实践”。

换句话说,我有登录部分和数据库部分。但是我怎样才能 - 在任意页面上 - 获取登录用户是谁,以便在数据库中获取适当的行(例如,有一个以“sub”作为主键的表)。

到目前为止,我已经找到了一个关于使用 JWT 的小指南,并携带了一个似乎可以用来取回用户信息的会话令牌。我不太确定这是安全的还是好的做法,而且我完全不知道该怎么做。任何关于最佳实践或“正确”方式的建议都将不胜感激。

【问题讨论】:

【参考方案1】:

“我如何 - 在任意页面上 - 获取登录用户”

这一切都取决于您使用的框架。例如,如果您使用 Spring Security 和 Cognito 构建了一个 AWS 应用程序,您可以在 Java 控制器中使用如下代码轻松获取登录用户:

@RequestMapping(value = "/user", method = RequestMethod.GET)
@ResponseBody
public String getItems(HttpServletRequest request, HttpServletResponse response) 

  String logUser =  request.getUserPrincipal().getName();
  return logUser;

我刚刚用一个使用 Cognito 的 Java Web 应用程序测试了这个逻辑,它运行良好:

您需要为您用于构建需要用户登录的应用的框架找到等效逻辑。

获得用户名后,您可以使用 DynamoDB API 查找更多用户详细信息。如果您使用的是 Java,则可以使用 Java API 来执行此操作。如果使用 javascript,请使用 JavaScript API。

【讨论】:

以上是关于AWS Cognito 和 DynamoDB的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda、API 网关和 Cognito:如何在 lambda 函数中获取身份对象?

如何从 AWS cognito 授权代码获取访问和刷新令牌

text [使用CLI注册Cognito用户] #aws #cognito#aws-cli

AWS Amplify 和 amazon-cognito-identity-js 的区别?

带/不带访问密钥和秘密访问密钥的 AWS Cognito InitiateAuth

AWS Cognito 和 DynamoDB