← Назад к вопросам
Какие знаешь механизмы авторизации в Spring Security?
1.8 Middle🔥 231 комментариев
#Spring Framework#Безопасность
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Механизмы авторизации в Spring Security
Авторизация — это проверка прав доступа пользователя к определённым ресурсам после успешной аутентификации. Spring Security предоставляет мощный и гибкий механизм для управления доступом на разных уровнях приложения.
1. Role-Based Access Control (RBAC)
Это самый распространённый подход, где доступ определяется на основе ролей пользователя.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasRole("USER")
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and().formLogin();
return http.build();
}
}
2. Permission-Based Access Control
В сложных системах часто используются разрешения (permissions), тоньше чем роли.
3. Method-Level Security с @PreAuthorize и @PostAuthorize
@Service
public class UserService {
@PreAuthorize("hasRole('ADMIN')")
public void deleteUser(Long userId) { }
@PreAuthorize("#userId == authentication.principal.id || hasRole('ADMIN')")
public UserDTO getUser(Long userId) { }
}
4. ACL (Access Control Lists)
Для гранулярного контроля доступа на уровне отдельных объектов.
5. OAuth 2.0 и JWT
Для микросервисов и распределённых систем используется OAuth 2.0 с JWT токенами.
6. Custom Authorization
Для специфических бизнес-логик можно написать свою реализацию.
Основные различия:
- RBAC — простая, быстрая
- Permission-based — более гибкий
- Method-level — защита бизнес-логики
- ACL — максимально гранулярный
- OAuth 2.0 — для микросервисов
Best Practices:
- Принцип наименьших привилегий
- Хранение ролей в БД
- Логирование попыток доступа
- HTTPS для защиты