【问题标题】:Advice on multiple projects sharing authentication (DRF)关于多个项目共享身份验证 (DRF) 的建议
【发布时间】:2020-07-08 08:33:42
【问题描述】:

我正在寻找一些关于为多个不同的 django 项目设置一个身份验证服务的建议。

目前,我有一个项目使用 AWS Cognito 进行身份验证(使用 django-cognito-jwt)。然后我有一个单独的项目,它使用不同的 AWS Cognito 用户池执行相同的操作。这些项目没有任何联系。每个应用的当前流程如下所示:

(1) 转到一个项目并通过前端登录

(2) 使用 AWS Amplify 针对 cognito 对用户进行身份验证并返回 JWT

(3) 点击我的 DRF API 并调用 get_or_create_for_cognito 来解析 JWT

(4) 如果帐户是新的,则在存储来自 cognito 的 ID 的数据库中创建 Django User 对象

(4)如果账号已经存在,通过cognito ID查找User记录并返回

(5) 使用此返回的用户对象,我可以查找与用户关联的组和权限,以允许或禁止各种端点。

我的目标是让一个 cognito 帐户允许用户在两​​个不同的项目上进行身份验证。

我知道我可以将两个项目都指向同一个“用户”表,但一些不同的网站/博客认为这是一种不好的做法。有些人提到引入第三个 django 项目,该项目的唯一责任是身份验证。但是,我发现的大多数示例都是使用 django 的内置身份验证而不是 cognito。

因此,从总体上讲,我想知道是否有人对如何构建它有任何想法,或者任何使用 cognito 的示例项目可能对我阅读有帮助。

感谢您的帮助!!

我也读过这篇类似的帖子: Multiple Django apps, shared authentication 但我的要求不同,因为我使用的是 JWT auth 和 cognito

【问题讨论】:

    标签: oauth django-rest-framework jwt amazon-cognito


    【解决方案1】:

    我认为您不需要太多的架构设计。为什么不只是put two app clients on the same user pool?然后,您只需针对两个应用程序中的相同用户池,使用不同的应用程序 ID。用户将被共享,每个应用程序都有其单独的客户端配置。

    【讨论】:

    • 是的,这在 AWS 方面有效。问题更多来自 Django 方面。因为 Django 要求您提供一个身份验证类,所以我需要提供一个 get_or_create_cognito 方法,该方法将在我的数据库中创建一个用户对象(独立于存储在 aws 中的 cognito 用户)。因此,除非我在我的两个应用程序客户端之间共享这个数据库,否则我仍然会遇到重复的用户。欣赏答案!
    猜你喜欢
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多