python - AWS Cognito 作为网站的 Django 身份验证后端

标签 python django amazon-web-services authentication amazon-cognito

我对 Cognito 的理解是,它可以用来代替本地 Django 管理数据库来验证网站用户的身份。但是,我没有找到任何带有通过 Cognito 的登录屏幕的基本“Hello, World”应用程序的简单示例。如果有人可以发布一篇文章,逐步说明如何创建 Hello World Django 应用程序和 Cognito 用户池,以及如何用对 AWS 的调用替换 Django 中的默认身份验证,我将不胜感激认知。

我尤其需要知道如何从 Cognito 管理站点收集信息,这些信息是设置对 Cognito API 的调用以对用户进行身份验证所需的信息。

有两种情况需要考虑:App 用户登录 App,以及 Admin 登录到站点的 django Admin URL。我假设我想在这两种情况下都使用 Cognito,否则我会留下一个潜在的漏洞,即 Admin URL 使用的是较弱的登录技术。

AWS 论坛和 StackExchange 上的当前答案要么说:

(1) 使用 Cognito 验证网站是浪费时间,它只是为了访问 AWS 资源

(2) 这不是浪费时间。我快要放弃了。我已经创建了一个示例 Cognito 用户池和用户组,并在网上搜索此用例的适当示例。 (没有找到,否则我不会写。)

(3) https://github.com/capless/warrant , https://github.com/metametricsinc/django-warrant是来自 aws 论坛的两种可能的解决方案。

最佳答案

如果您正在阅读本文,您可能在 Google 上搜索过“aws cognito django”xD。

我只是想分享一下我为使这件事发挥作用所做的工作:

  • Django-Warrant .很棒的 aws cognito 包装器包。
  • 确保了解您当前的用户模型结构。如果您使用自定义用户模型,请不要忘记使用 COGNITO_ATTR_MAPPING 设置对其进行映射。
  • 更改您的身份验证以支持第 3 方连接。当您从客户端获得一些 Cognito token 时,使用 oAuth/JWT/Session 将其转换为您自己的 token 。

  • 重新考虑您的登录/注册过程。你想要不同的注册吗? django-warrant 包支持它...

归根结底,这是一个伟大的快速身份验证解决方案。

关于python - AWS Cognito 作为网站的 Django 身份验证后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44234718/

相关文章:

python - 使用 python 将 Json 转换为 CSV 文件

python - 提取统计数据

node.js - 如何升级 AWS OpsWorks 中实例的 Node 版本

javascript - 从另一台服务器连接到 aws 服务器上的 MongoDB

javascript - 带有 webpack 和 Reactjs 的 django runserver 项目结构

linux - 如何在没有EBS的情况下增加ec2实例根文件系统?

python - 如何将 Python 日期时间日期转换为十进制/浮点年

python - 使用 Django Rest Framework 和 IOS 应用程序时要使用哪种身份验证?

python - 反向要求.txt

python manage.py makemigrations 没有检测到任何变化?