Что такое аутентификация (authentication)?

Ответ

Аутентификация — это процесс проверки подлинности субъекта (пользователя, системы или устройства), обычно путём подтверждения его учётных данных (credentials).

Простыми словами: Ответ на вопрос "Кто ты?".

Основные методы аутентификации:

  1. По знаниям (Something you know): Логин и пароль, PIN-код.
  2. По владению (Something you have): Ключ-токен, смарт-карта, мобильное устройство (код из SMS/приложения).
  3. По свойству (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+ 🔞

Ну, слушай, аутентификация — это когда система тебя, блядь, опознаёт, как в фильме про шпионов, только без шинелей и финок. По сути, она отвечает на вечный вопрос: «А ты, сука, кто такой?».

Если по-простому, ёпта: Это когда ты доказываешь, что ты — это ты, а не какой-нибудь пидарас шерстяной, который пришёл под твоим именем.

Как это можно сделать, блядь? Всего три пути, как в сказке:

  1. По тому, что ты знаешь (Something you know): Типа пароль, пин-код или девичью фамилию матери. Старо как мир, но если пароль «12345», то ты, блядь, сам себе враг.
  2. По тому, что у тебя есть (Something you have): Физическая хуйня: ключ-токен, банковская карточка или твой телефон, куда приходит смс. Потерял — сиди, бзди, вспоминай, где последний раз был.
  3. По тому, чем ты являешься (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): Что тебе можно? — Это проверка прав. Вася Пупкин, тебе можно в админку или только в сортир смотреть?

Сначала система тебя опознаёт (аутентификация), а потом уже решает, пускать ли тебя в святая святых или послать нахуй смотреть мультики (авторизация). Вот и вся магия, ебать мои старые костыли.