Ответ
Аутентификация — это процесс проверки подлинности субъекта (пользователя, системы или устройства), обычно путём подтверждения его учётных данных (credentials).
Простыми словами: Ответ на вопрос "Кто ты?".
Основные методы аутентификации:
- По знаниям (Something you know): Логин и пароль, PIN-код.
- По владению (Something you have): Ключ-токен, смарт-карта, мобильное устройство (код из SMS/приложения).
- По свойству (Something you are): Биометрия (отпечаток пальца, сканирование лица).
Пример реализации в Spring Security:
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authz -> authz
.requestMatchers("/admin/**").hasRole("ADMIN")
.requestMatchers("/user/**").authenticated()
.anyRequest().permitAll()
)
.formLogin(Customizer.withDefaults()) // Форма логина
.httpBasic(Customizer.withDefaults()); // Или HTTP Basic Auth
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
// Источник данных о пользователях (в памяти, БД, LDAP)
UserDetails user = User.withUsername("user")
.password(passwordEncoder().encode("pass"))
.roles("USER")
.build();
return new InMemoryUserDetailsManager(user);
}
}
Аутентификация vs Авторизация:
- Аутентификация (Authentication): Кто ты? — Установление личности.
- Авторизация (Authorization): Что тебе разрешено? — Проверка прав доступа к ресурсам.
Аутентификация всегда предшествует авторизации.