这是Web服务与多租户数据库交互的好方法吗?

时间:2017-02-01 00:32:18

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

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

目前的工作方式是:

  1. 具有相应company_id的用户的数据库表。
  2. 登录后,身份验证服务会在令牌有效内容中使用company_id发出JWT令牌。
  3. 客户端使用令牌发送HTTP请求,之后服务验证令牌的有效性,然后特定路由返回数据,其中SQL执行WHERE company_id = company_id_in_token
  4. 我遇到的红旗是:

    1. 在令牌有效负载中包含用户数据。 SSL会否定这一点,但我担心设计不好。
    2. 必须在每个表中包含company_id列才能进行过滤。
    3. 拜托,我请你撕掉一个新的。

1 个答案:

答案 0 :(得分:0)

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

如果有租户ID列,最好在核心业务对象表中包含租户ID列。表中没有租户id列依赖于核心业务对象,因为它本身并没有传达任何重要性。

HTH