Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建由restful web服务支持的多租户SPA_Javascript_Java_Deployment_Architecture_Multi Tenant - Fatal编程技术网

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

Javascript 创建由restful web服务支持的多租户SPA,javascript,java,deployment,architecture,multi-tenant,Javascript,Java,Deployment,Architecture,Multi Tenant,我正在尝试使用HTML5/Javascript创建一个多租户SPA(单页应用程序)。此应用程序将调用restful Web服务进行数据更新。以下是对架构的说明: 这些是我面临的挑战: 标识:服务如何知道来自客户端JS的请求对应于数据库中的特定模式?我可以发送一个“APPID”令牌吗?但是,这很容易被最终用户欺骗 连接池:如果连接池依赖于tomcat池,那么当Web服务处理来自app1 JS的请求时,如何确保使用“app1”凭据创建的连接(该凭据可以访问app1架构)返回到Web服务?我可以创建

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

这些是我面临的挑战:

  • 标识:服务如何知道来自客户端JS的请求对应于数据库中的特定模式?我可以发送一个“APPID”令牌吗?但是,这很容易被最终用户欺骗
  • 连接池:如果连接池依赖于tomcat池,那么当Web服务处理来自app1 JS的请求时,如何确保使用“app1”凭据创建的连接(该凭据可以访问app1架构)返回到Web服务?我可以创建一个可以访问所有模式的数据库帐户,但这可能会成为法规遵从性问题

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

这通常由经过身份验证的令牌完成。这通常由标准会话cookie(由您正在使用的任何应用程序服务器实现)或在每次调用时得到验证的不太有状态的东西(如。这最终是相同的解决方案,一个使用cookie(通过HTTP头实现),另一个使用Auth HTTP头。不管怎样,基本上每个用户都会得到一个神奇的字符串,它在每次调用时都会被验证为属于一组特定的凭证


它在理论上与您的“APPID”非常相似,不同之处在于标记是不透明的,并且很可能由于其长度和复杂性(在宇宙热死之前)而无法使用,因此是有效安全的。区别在于您在服务器端而不是客户端持有令牌和哪个“APPID”之间的绑定。

感谢Rob的回答。是否有任何库可以实现或方便地使用Oauth承载令牌进行javascript/java组合?如果您想尊重其他人的身份验证(这是通过facebook或google类型的东西登录的方式),Oauth非常简单:就是一个例子。创建自己的提供商更深入一些。。。您可能想要使用像OpenAM这样的包。尽管如此,除非您使用多个服务器,否则我会从一个简单的旧会话开始,除非您真的需要复杂性。