【问题标题】:Securing a React frontend and with Python API using AWS Cognito使用 AWS Cognito 保护 React 前端和 Python API
【发布时间】:2017-09-19 03:16:31
【问题描述】:

我正在考虑将 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】:

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

    • 刷新
    • 访问
    • 身份证

    对于 python,boto3 现在可以与 Cognito 交互。还有这个 python lib 包装器:warrant,让它更容易。

    一旦您拥有令牌,就可以将其传递给 API(例如:访问),并且可以在服务器端使用 python-jose 进行检查,根据 AWS docs

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

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

    default cookie session factory 有效,但它警告令牌未加密发送。

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 2016-09-22
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 2019-02-20
      • 1970-01-01
      相关资源
      最近更新 更多