保护SPA多租户SaaS应用程序

时间:2013-04-30 01:33:58

标签: login angularjs spring-security saas single-page-application

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

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

我找到了一个用Spring JPA(http://krams915.blogspot.com/2012/01/spring-security-31-implement_3065.html)实现Spring安全性的示例,但它不适用于SPA和SaaS。

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

...谢谢

1 个答案:

答案 0 :(得分: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调用的安全URL
  2. 保护一些Java方法。
  3. 我更喜欢第二种(服务上的安全商业方法)。我认为它更方便,因为通常我们需要安全的业务操作,而不是某些端点。作为adwantage,您将能够通过其他协议公开您的业务逻辑,并且安全性已经存在。从另一方面,我可以想象一些业务需求对不同的端点/协议具有不同的权限。所以这更多地取决于你的实际情况。

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

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