使用AWS Cognito保护React前端并使用Python API保护

问题描述 投票:2回答:1

我正在考虑将AWS Cognito用作针对我正在使用React和Python REST API后端(金字塔)构建的单页Web应用程序的用户管理系统。 我正在努力查看所有部分如何适合我的体系结构(文档似乎并没有帮助我)。 关于如何使用JS在前端中实现身份验证的例子很多。 我的问题是如何将此身份验证集成到我的后端REST API中。

在我当前使用的手动用户管理系统中,前端在登录时调用REST API,并为它提供了令牌,令牌将针对每个后续请求再次传递给API。 然后,我可以在API函数上使用ACL,检查访问资源的权限等。如果我要使用Cognito并在前端执行身份验证(如许多示例所示),后端将如何知道令牌是否有效当它收到请求时? 当然,我不必从后端调用Coginto来针对每个请求进行验证吗? 如果在Cognito中定义了“该用户是否在管理组中”这个信息,我该如何进行检查? 同样,针对每个请求呼唤Cognito似乎非常繁琐。

我确实看到了一个示例,其中一个有效令牌列表从Cognito导出为JSON文件,并保存在后端。 当可以定期添加和删除用户时,这似乎非常静态。

Cognito真的适合我的用例吗? 一些高级指导和指向任何相关示例和文档的指针将不胜感激!

reactjs authentication pyramid aws-cognito
1个回答
0
投票

使用Cognito进行身份验证时,用户可以拥有3个令牌:

  • 刷新
  • 访问
  • ID

对于python,boto3现在可以与Cognito交互。 还有一个python lib wrapper: rant ,使其更容易。

获得令牌后,就可以将其传递给API(例如:访问权限),并且可以根据AWS 文档在服务器端使用python-jose对其进行检查。

要传递令牌,示例金字塔/登录实现可以在设置请求响应之前将信息保留在会话中:

request.session['my_token'] = str(a_token)

默认的cookie会话工厂可以工作,尽管它会警告令牌未加密发送。

© www.soinside.com 2019 - 2024. All rights reserved.