2014-10-06 2 views
2

Любая помощь, консультации и опыт приветствуются.Крепление AngularJS SPA с пружинной защитой 3.2

В настоящее время у меня есть отдельный AngularJS SPA на HTTP-сервере Apache и Spring Backend на Servlet Tomcat 7. Бэкэнд служит в качестве API-интерфейса Rest для SPA. Некоторые ресурсы для отдыха потребуют от пользователя определенной роли.

Я искал в Интернете в течение нескольких дней, что и как реализовать наилучшую стратегию безопасности:

  • Basic Auth
  • Дайджест
  • OAuth
  • Апатриды, печенье? Сессии? Лексемы? CSRF?

Как вы собираетесь связывать Spring Security в Json или XML с вашим SPA, чтобы показать пользователю страницу аутентификации или «вашу успешно прошедшую проверку страницу»?

Любая помощь приветствуется.

ответ

0

Я настоятельно рекомендую смотреть это Spring's introductory video. Это объясняет использование Spring Security с нуля с использованием конфигурации Java. Помимо базовой конфигурации, аутентификации и использования токена CLRF, вы также погружаетесь в безопасность на местах. Использование шаблонов на сервере с Thymeleaf, хотя, но может обеспечить много мудрости для приложения на основе REST.

+1

Я смотрел его, и я понимаю понятия, но разница в том, что я не использую шаблоны. Единственный способ, с которым СПА общается с бэкэндом, - через JSON. Я мог бы просто использовать HTTPS Basic без гражданства, но мой сайт был бы уязвим для CSRF. Как мне закрыть эту дыру? – Vinchenzo

1

Я, наконец, выяснил, как сделать аутентификацию SPA с помощью My Rest Backend.

В весеннем безопасности я создал

  • Выборочная SimpleUrlAuthenticationFailureHandler, которая возвращает HTTP-Unauthorizated если Войти попытка терпит неудачу.
  • Пользовательский SavedrequestAwareAuthenticationSuccessHandler, который возвращает Http-Oke, если попытка входа в систему прошла успешно.
  • Пользовательский AuthenticationEntryPoint, который возвращает Http-Unauthorizated вместо перенаправления.
  • Пользовательский LogoutSuccessHandler, который возвращает Http-OK.
  • I отключен CSRF.

Если кому-то нужна дополнительная помощь, не стесняйтесь, дайте мне знать или напишите мне.

+0

Почему вы решили отключить CSRF? –

+0

Причина в том, что я не знал, как обращаться с токенами в переднем конце с угловыми ... – Vinchenzo

+1

Ahh ok, справедливо. Я немного поработал над тем, что делать в SPA для CSRF, что привело меня к 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-перехватчика. –