Ответ
Аутентификация — это процесс проверки подлинности субъекта (пользователя, системы или устройства), обычно путём подтверждения его учётных данных (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): Что тебе разрешено? — Проверка прав доступа к ресурсам.
Аутентификация всегда предшествует авторизации.
Ответ 18+ 🔞
Ну, слушай, аутентификация — это когда система тебя, блядь, опознаёт, как в фильме про шпионов, только без шинелей и финок. По сути, она отвечает на вечный вопрос: «А ты, сука, кто такой?».
Если по-простому, ёпта: Это когда ты доказываешь, что ты — это ты, а не какой-нибудь пидарас шерстяной, который пришёл под твоим именем.
Как это можно сделать, блядь? Всего три пути, как в сказке:
- По тому, что ты знаешь (Something you know): Типа пароль, пин-код или девичью фамилию матери. Старо как мир, но если пароль «12345», то ты, блядь, сам себе враг.
- По тому, что у тебя есть (Something you have): Физическая хуйня: ключ-токен, банковская карточка или твой телефон, куда приходит смс. Потерял — сиди, бзди, вспоминай, где последний раз был.
- По тому, чем ты являешься (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);
}
}
И главное, блядь, не путай! Это две большие разницы, как говорят в Одессе:
- Аутентификация (Authentication): Кто ты? — Это установление личности. Ты Вася Пупкин или нет?
- Авторизация (Authorization): Что тебе можно? — Это проверка прав. Вася Пупкин, тебе можно в админку или только в сортир смотреть?
Сначала система тебя опознаёт (аутентификация), а потом уже решает, пускать ли тебя в святая святых или послать нахуй смотреть мультики (авторизация). Вот и вся магия, ебать мои старые костыли.