← Назад к вопросам

Какие знаешь механизмы авторизации в 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 для защиты
Какие знаешь механизмы авторизации в Spring Security? | PrepBro