0

我需要一些保护单页多租户saas应用程序的帮助。确保SPA多租户SaaS应用程序

问题: 1)什么是实现它的最佳方式?我正在尝试使用angularjs,spring mvc和REST构建应用程序。 2)这可以使用Spring Security来完成吗?任何创建登录页面和保护REST的例子都会有帮助吗?

我已经找到了与Spring JPA(http://krams915.blogspot.com/2012/01/spring-security-31-implement_3065.html)实施春季安全的样本,但它不是SPA和SaaS。

我明白这是一个非常宽泛的问题,但我是SPA,REST和SaaS的新手,所以任何指针都会有所帮助。

谢谢...

回答

0

我已经参与了SPA和安全方面的两个项目。最后一个是GWT + Spring Security。我相信你可以一起使用Angular和Spring Security。

不幸的是,Spring Security AFAIK没有内置的配置参数'我们处于SPA模式'。因此,Spring Security方面的一些调整/配置将是必要的。示例: 想象一下,在登录期间,您将调用内置到Spring Security登录控制器中。在成功验证的情况下,默认情况下,用户将被重定向到索引页面,在失败的情况下,它将被重定向到相应的错误页面。对于标准Web应用程序来说,这对于SPA Web应用程序来说并不那么有用。在SPA的情况下,您需要检测AJAX调用并打印带成功案例的用户名/角色的JSON,或发送401代码失败(然后在JS中检测401并显示相应的错误)。您可以使用Spring Security的相应扩展点来执行此操作:AuthenticationSuccessHandlerAuthenticationFailureHandler

有些另一件事来调整:在默认情况下后会话过期的用户将被重定向到登录页面(和SPA应用程序接收登录页上到下一个AJAX调用的响应)。

展望我的个人经验一般指南将如下所示:登录后将角色列表加载到JS中。用它在UI端显示/隐藏相应的组件。 也在服务器端应用相同的限制列表。为了确保用户不在浏览器中编辑JS(尽管在某些中等大小的应用程序缩小了JS的情况下,它将会非常复杂)。在服务器端,你必须选择之间:

  1. 安全网址的AJAX调用
  2. 安全上的一些Java方法。

我更喜欢第二个(服务上的安全业务方法)。我认为它更方便,因为我们通常希望获得安全的业务操作,而不是某些端点。作为优势,您将能够通过其他协议公开您的业务逻辑,并且安全性已经存在。从另一方面,我可以想象一些业务需求对不同的端点/协议拥有不同的权限。所以这取决于你的实际情况。

Lage size JS应用程序必须拆分成模块。为了减少直接的依赖关系,最好使用直接调用的事件在模块之间进行通信。有关Addy Osmany关于如何在这些文件中进行安全性的有趣想法。我没有找到它的好链接,也许thisthis将是有益的(搜索“权限”)。

随时发布任何问题。祝你好运。