Я разрабатываю API REST с помощью Spring 4. Я хотел бы защитить некоторые конечные точки с помощью Spring Security, но на основе того, что я прочитал, это можно сделать либо с помощью @EnableGlobalMethodSecurity
, либо @EnableWebSecurity
. К сожалению, документация, которую я нашел для них, не ясно объясняет, что они делают (или как они сравнивают). Если я хочу защитить API-интерфейс Spring REST API с проверкой подлинности и авторизацией на основе данных и отношений, объявленных в стандартной реляционной базе данных, каков рекомендуемый метод для достижения этого в Spring 4?
@EnableGlobalMethodSecurity vs @EnableWebSecurity
Ответ 1
EnableWebSecurity
предоставит конфигурацию через HttpSecurity, обеспечив конфигурацию, которую вы можете найти с тегом <http></http>
в конфигурации xml, это позволит вам для настройки вашего доступа на основе шаблонов URL-адресов, конечных точек аутентификации, обработчиков и т.д.
EnableGlobalMethodSecurity
обеспечивает безопасность AOP для методов, некоторые из аннотаций, которые он будет включать: PreAuthorize
PostAuthorize
также поддерживает JSR-250. Для вас есть еще несколько параметров
Для ваших нужд лучше соединить их. С помощью REST вы можете достичь всего, что вам нужно только с помощью @EnableWebSecurity
, так как HttpSecurity#antMatchers(HttpMethod,String...)
принимает элементы управления по методам Http