我考虑将AWS Cognito用作单页面Web应用程序的用户管理系统,我使用React和Python REST API后端(Pyramid)进行构建。我很难看到所有的部分如何适合我的建筑(文档似乎并没有帮助我)。有许多很好的例子,说明如何使用JS在前端实现身份验证。我的问题是如何将此身份验证集成到我的后端REST API中。
在我目前的手动滚动用户管理系统中,前端在登录时调用REST API并获得一个令牌,该令牌会在每次后续请求时再次传递给API。然后,我能够在我的API函数上使用ACL,检查访问资源的权限等。如果我使用Cognito并在前端执行身份验证(尽可能多的示例)我的后端如何?知道令牌在收到请求时是否有效吗?当然,我不必从后端调用Coginto为每个请求验证这一点?另外,我如何检查信息,例如'此用户是否在管理员组中?如果该组是在Cognito中定义的?再次,为每个请求呼叫Cognito似乎非常重量级和繁琐。
我确实看到一个示例,其中有效令牌列表从Cognito导出为JSON文件并保留在后端。当用户可以定期添加和删除时,这似乎非常静态。
Cognito真的适合我的用例吗?我们将非常感谢一些高级指导和对任何相关示例和文档的指示!
答案 0 :(得分:0)
使用Cognito进行身份验证时,用户可以拥有3个令牌:
对于python,boto3现在可以与Cognito进行交互。还有这个python lib包装器:warrant,以使其更容易。
获得令牌后,可以将其传递给API(例如:访问),并且可以使用python-jose在服务器端检查,根据AWS docs
要传递令牌,示例金字塔/登录实现可以在设置请求响应之前将信息保留在会话中:
request.session['my_token'] = str(a_token)
default cookie session factory有效,但它会警告该令牌未加密发送。