2014-10-06 74 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

相關問題