我正在构建一个需要支持多租户的新API。
我可以知道如何安全地实现数据的读写,而不必担心客户端是否能够了解(或查看)其他租户数据。
我还可以理解如何为经过身份验证的端点确定正确的租户(即使用JWT中的承租者id )。
但是,对于匿名端点,我不知道如何处理。我想出了以下解决方案:
添加租户id作为参数。我不喜欢这样做,因为我不希望多租户成为资源端点的一部分。
优点:
创建一个可以生成匿名令牌的租户服务(不要设置子服务器,只设置一个租户id)。
优点
使用应用程序令牌。然后,每个租户可以有多个客户端,每个客户端使用一个密钥和秘密进行身份验证。这扩展了第二种解决方案,它有自己的优点和缺点:优点
因为这是创建这些端点的关键部分(而且它可以成为很多端点),我想听听您对这些解决方案的看法,也许还有其他一些我无法想出的方法,也许有一种我找不到的模式。您对此的投入将不胜感激。
发布于 2018-07-11 11:01:03
考虑将tennant作为主机标题的一部分传递。即
{tennant}.myapi.com/{resource}/{action}这解决了您对透明度的关切,并使每个租户保持独立。
一个可能的缺点是它为多租户客户端添加了多个端点。但这在某种程度上可以被认为是一件好事,因为它保持了分离。
https://softwareengineering.stackexchange.com/questions/373961
复制相似问题