我正在尝试为多个Django应用(API)创建集中式身份验证服务器。我已经看到过帖子/推荐,但都不完全符合我的需求。
概述:
问题/不确定性:
问:认证令牌应该在认证服务器上还是在每个项目上创建? ie)每个用户对所有项目都具有一个身份验证令牌,或者对每个项目都具有一个身份验证令牌?
问:角色将存储在每个应用程序中。我想在JWT中发送角色和身份验证令牌。该数据是否应冗余存储在身份验证服务器上?另一种方式是身份验证服务器访问项目数据库。处理此问题的最佳方法是什么?用户对每个项目将具有不同的角色。
Q:Auth服务器将具有基本的用户信息(电子邮件/用户名,密码,姓氏/名字等)。由于不能在数据库之间使用外键,因此我可以使用基于用户名的用户代理在每个项目上创建用户。应用服务器需要访问哪些身份验证令牌有效吗?
利用现有软件的优势:
答案 0 :(得分:0)
您的问题似乎有多个,所以我也将答案分开:
关于用户
由于您的用户不属于您的“突变模式”,因此在此处有两个选择:
这意味着您的数据库架构将是这样的:
root database (all common data here)
project 1 database (with it's own user data or referencing root)
project 2 database (with it's own user data or referencing root)
现在可以使用身份验证令牌
您具有与上述相同的选择:
如何实现整个过程
由于用例非常特殊,因此您可能会遇到现有软件带来的一些阻力。但是创建自己的多租户解决方案不是that hard