我正在开展一个“非工作时间”项目的公司,该项目允许用户使用oAuth2通过NodeJS Rest API从客户端数据库请求数据(或者可能是另一种基于令牌的身份验证系统,无论什么最适合)。
一般数据结构如下所示:
- Node API Server (Handles the incoming requests)
--- oAuth 2 Users/Clients Database
- Database Server 1 (MySQL) (SRV1)
--- Client Database 1 (DBNAME1)
--- Client Database 2 (DBNAME2)
--- Client Database 3 (DBNAME3)
--- Client Database 4 (DBNAME4)
- Database Server 2 (MySQL) (SRV2)
--- Client Database 5 (DBNAME5)
--- Client Database 6 (DBNAME6)
- Database Server 3 (MySQL) (SRV3)
--- Client Database 7 (DBNAME7)
导入通知:用户需要能够链接到多个客户端数据库。 (最好使用相同的用户帐户,但使用不同的令牌(或可能是其他标识符))
我希望在开始编码所有内容之前有一个明确的目标,然后在开发过程中在墙后打墙。
问题是。我目前有一个带有客户端数据库连接的工作端点,但我似乎无法解决它如何开始使用这种方法。
我必须存储这些标识符的想法:
- User 1
--- Name, Email, Pass, ..
--- Tokens/Connections:
------ Token: SRV1-{TokenHash}
------ Database: DBNAME2
------ Scope: *
------ Token: SRV3-{TokenHash}
------ Database: DBNAME7
------ Scope: *
API端点如下所示:
api.domain.com:3000/v1/CustomerService/customers
用户将通过请求标头进行身份验证。
然后,应用程序将从令牌链接中获取客户端数据库名称,并从令牌本身的前4个字符中获取服务器。
例如,会导致:
GET data from: Database Server 3 (SRV3) -> Client Database 7 (DBNAME7) -> Table:Customers
我查看了整个oAuth2和JWT实现,但所有内容都是针对具有多个用户的1个数据集而设计的。
是否有更有效或更好的方法来处理上述情况?我应该退出整个基于令牌的身份验证吗?
我似乎无法找到有关此内容或其他API处理此内容的任何信息。