我对Cognito的理解是,它可以用来代替本地Django管理数据库来认证网站的用户。然而,我并没有找到任何简单的例子,比如一个基本的“Hello,World”应用程序,它有一个通过Cognito的登录屏幕。如果有人能发布一篇文章,一步一步地展示如何创建Hello World Django应用程序和Cognito用户池,然后如何用AWS Cognito调用替换Django中的默认身份验证,我将非常感激。
特别是,我需要知道如何从Cognito管理站点收集信息,这是建立对Cognito API的调用以对用户进行身份验证所必需的。
有两种情况需要考虑:应用程序用户登录到应用程序,以及管理员登录到网站的django管理员URL。我假设我想在这两种情况下都使用Cognito,否则我将留下一个潜在的漏洞,其中Admin URL使用较弱的登录技术。
AWS论坛和StackExchange上当前的答案要么是:
(1)使用Cognito认证网站是浪费时间,它只用于访问AWS资源
(2)这不是浪费时间。我要放弃了。我甚至创建了一个Cognito用户池和用户组示例,并在web上搜索这个用例的适当示例。(没有找到,否则我就不会写信了。)
(3)https://github.com/capless/warrant,https://github.com/metametricsinc/django-warrant是两个来自aws论坛的可能解决方案。
如果你正在阅读这篇文章,你可能会在谷歌上搜索“aws cognito django”xD。
我只想和大家分享我做了些什么来让这件事发挥作用:
COGNITO_ATTR_MAPPING
设置映射它。更改身份验证以支持第三方连接。当您从客户机获得一些Cognito令牌时,使用oAuth/JWT/Session将其转换为您自己的令牌。
重新思考您的登录/注册过程。你想换个登记吗?django授权包支持它。。。
归根结底,这是一个用于快速身份验证的伟大的解决方案。
除了公认的答案外,还有一个简单但非常重要的额外步骤,我发现在django 2.0中使用django权证是必要的:
根包中backend.py中的条件需要从以下位置更改:
致:
对Zappa和AWS Lambda使用django搜查令:
我正在处理的项目还使用Zappa来实现我的Django应用程序到AWS Lambda的无服务器部署。尽管上面的代码在本地测试时为我修复了django许可证,但在将应用程序部署到Lambda环境之后,我遇到了另一个重大问题,这是由于django许可证的一些支持包造成的,主要与python jose pycryptodome有关,django许可证在身份验证过程中使用了python jose pycryptodome。该问题以与加密相关的FileNotFound错误的形式出现。这个错误似乎是由于pycryptodome希望在Windows(我正在开发的)和Linux(Lambda环境)上的Crypto包中分别有不同的文件可用而导致的。我最终通过下载Linux版本的pycryptodome并将它的Crypto包与Windows版本的Crypto包合并来解决这个问题。
TLDR:如果你想将django授权与AWS Lambda一起使用,并且你是在Windows机器上开发的,那么一定要下载Linux版本的pycryptodome,并将其密码包与Windows版本的密码包合并。
注意:pycryptodome和python jose(不是python jose cryptodome)的版本分别是3.7.2和3.0.1。
相关问题 更多 >
编程相关推荐