创建由restful Web服务支持的多租户SPA

时间:2016-03-01 22:18:30

标签: javascript java deployment architecture multi-tenant

我正在尝试使用HTML5 / Javascript创建多租户SPA(单页应用)。此应用程序将调用restful webservices进行数据更新。以下是对架构的说明:enter image description here

这些是我的挑战:

  • 身份:服务如何知道来自客户端JS的请求对应于数据库中的特定模式?也许我可以发送一个" APPID"令牌?但是,这可能会被最终用户轻易欺骗?
  • 连接池:如果依赖tomcat池进行连接池,我如何确保使用" app1"创建连接?在处理来自App1 JS的请求时,有权访问APP1模式的凭据会返回到Web服务吗?我可以,只需创建一个可以访问所有模式的数据库帐户,但这可能会成为合规性问题。

我应该只部署多个web服务副本吗?比方说,app1 JS查询services.app1.com和app2 JS查询services.app2.com?这可能会解决上述两个问题,但我不认为这是一个多租户解决方案。

1 个答案:

答案 0 :(得分:1)

这通常由经过身份验证的令牌完成。这通常由标准会话cookie(由您正在使用的任何应用程序服务器实现)处理,或者在每次调用时得到验证的不太有状态(如OAuth bearer token)。这最终是相同的解决方案,一个使用cookie(通过HTTP头实现),另一个使用Auth http头。无论如何,基本上发生的是每个用户都被发出一个魔术字符串,该字符串在每次调用时被认证为属于一组特定的凭证。

它在理论上与你的“APPID”非常相似,不同之处在于令牌是不透明的,并且非常可能不知道它们的长度和复杂性(在宇宙热死之前),因此是有效的安全。区别在于您在令牌和服务器端的“APPID”之间保持绑定,而不是在客户端。