2014-10-06 73 views
2

欢迎任何帮助,建议和经验。用Spring Security 3.2保护AngularJS SPA 3.2

我目前在Apache HTTP服务器上有一个单独的AngularJS SPA,而在Tomcat 7 Servlet上有一个Spring后端。后端充当SPA的Rest API。一些其他资源将需要用户具有特定的角色。

我一直在寻找什么以及如何实现最佳的安全策略日内互联网:

  • 基本验证
  • 文摘
  • 的OAuth
  • 无国籍,饼干?会议?令牌? CSRF?

你会如何将JSON或XML中的Spring Security传递给SPA以向用户显示认证页面或“您的成功认证页面”?

任何帮助表示赞赏。

回答

0

我强烈建议你看这个Spring's introductory video。它从使用Java配置的角度解释了Spring Security的用法。除了基本配置之外,身份验证和CLRF令牌的使用也潜入现场安全。虽然使用Thymeleaf在服务器上使用模板,但也可以为基于REST的应用程序提供很多智慧。

+1

我确实看过它,而且我理解这些概念,但不同之处在于我不使用模板。 SPA与后端通信的唯一方式是通过JSON。我可以使用HTTPS Basic无状态,但是我的站点容易受到CSRF的攻击。我将如何关闭这个洞? – Vinchenzo 2014-10-07 10:31:43

1

我终于想出了如何让SPA与我的Rest后端进行身份验证。

在Spring Security我创建了一个

  • 定制SimpleUrlAuthenticationFailureHandler如果登录尝试失败,它返回一个HTTP-Unauthorizated。
  • 自定义SavedrequestAwareAuthenticationSuccessHandler,如果登录尝试成功,将返回Http-Oke。
  • Custom AuthenticationEntryPoint它返回Http-Unauthorizated而不是重定向。
  • Custom LogoutSuccessHandler它返回Http-OK。
  • 我禁用了CSRF。

如果有人需要更多的帮助请随时让我知道或给我留言。

+0

你为什么决定禁用CSRF? – 2015-02-03 07:07:05

+0

原因是因为我不知道如何处理与angularjs前端的令牌... – Vinchenzo 2015-02-03 08:13:34

+1

啊,好的,够公平的。我做了一些挖掘CSRF的SPA的工作,这使我转向https://jira.spring.io/browse/SEC-2460。从这张票,罗布提到一个SO在https://stackoverflow.com/questions/20862299/with-spring-security-3-2-0-release-how-can-i-get-the-csrf-token-in -a-page-that/20960352这导致博客(http://patrickgrimard.com/2014/01/03/spring-security-csrf-protection-in-a-backbone-single-page-app/)与一个相当好的解决方案要点是一个HEAD请求,读取CSRF标记并设置一个Angular HTTP拦截器。 – 2015-02-04 06:28:01

相关问题