【问题标题】:Is this a good way a web service interacts with a multi-tenant database?这是 Web 服务与多租户数据库交互的好方法吗?
【发布时间】:2017-06-17 14:58:15
【问题描述】:

我正在尝试让我的 Web 服务识别特定的客户端数据以返回为 JSON。我不确定这是正确的方法,我希望得到一些建议。

目前的工作方式是:

  1. 具有相应 company_id 的用户所属的数据库表。
  2. 登录后,身份验证服务会在令牌有效负载中使用 company_id 发出 JWT 令牌。
  3. 客户端发送带有令牌的HTTP请求,之后服务验证令牌的有效性,然后特定路由返回数据,SQL执行WHERE company_id = company_id_in_token

我遇到的危险信号是:

  1. 在令牌有效负载中包含用户数据。 SSL 会否定这一点,但我担心糟糕的设计。
  2. 必须在每个表中包含 company_id 列以进行过滤。

拜托,我请你给我翻一个新的。

【问题讨论】:

  • 应该将toke链接回user_id吗?你不能用它来获取 company_id 吗?至于在每个表中都有一个 company_id,这可能只是在您的查询中加入连接到公司表的 SQL 连接的问题,如果您可以在没有 company_id 的情况下加入,那么您不需要在该表中包含该列

标签: database web-services rest jwt multi-tenant


【解决方案1】:

如果您参考 OpenID 规范,则说明您发送了 id_token,但会对其进行签名以供以后验证。此外,如果 upn 或 sub 声明可用,您可以从该数据推断租户。但是,如果有问题的用户代表另一个租户工作,则需要特殊的标题来推断租户,例如上下文租户可以是包含上下文下租户的标题。

如果有租户 ID 列,最好在核心业务对象表中拥有租户 ID 列。依赖于核心业务对象的表中不会有租户 id 列,因为它本身没有任何意义。

HTH

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多