Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.

@bookjava
👮‍♂️ Spring Security: Фейсконтроль для вашего API Spring Security - это не просто библиотека, это мощный фреймворк, который встает стеной между интернетом и вашим контроллером. Его работа строится на концепции Filter Chain (Цепочка фильтров). Каждый запрос проходит через серию проверок: "Есть ли токен?", "Валиден ли он?", "Есть ли права?". 🔑 Authentication vs Authorization Два слова, которые путают все джуниоры. 1. Authentication (Аутентификация): "Кто ты?" 🔴 Ввод логина/пароля. 🔴 Проверка отпечатка пальца. 🔴 Ответ: 401 Unauthorized (если не знаем, кто это). 2. Authorization (Авторизация): "А что тебе можно?" 🔴 Ты Вася (мы тебя узнали), но ты хочешь удалить базу данных. Тебе нельзя. 🔴 Ответ: 403 Forbidden (знаем кто ты, но не пустим). 🎫 JWT (JSON Web Token) - Паспорт туриста В микросервисах мы не храним состояние пользователя на сервере (Stateless). Вместо этого, при логине мы выдаем пользователю Токен. JWT - это строка из трех частей, разделенных точками: Header.Payload.Signature. 🔴 Payload: Полезные данные (User ID, Role, Email). 🔴 Signature: Цифровая подпись сервера. Гарантирует, что хитрый хакер не поменял в токене роль USER на ADMIN. Как это работает: 1. Клиент шлет Логин/Пароль -> Сервер проверяет и отдает JWT. 2. Клиент сохраняет JWT (обычно в LocalStorage браузера). 3. При каждом запросе клиент прикрепляет JWT в заголовок: Authorization: Bearer <token> 4. Сервер видит токен, проверяет подпись и пускает (не ходя в базу данных!). 🛡 Настройка (Spring Boot 3.x) Раньше мы наследовались от WebSecurityConfigurerAdapter. Забудьте, этот класс Deprecated. Сейчас мы просто объявляем бин SecurityFilterChain. @Configuration @EnableWebSecurity public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf(AbstractHttpConfigurer::disable) // Для REST API отключаем .sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // Никаких сессий! .authorizeHttpRequests(auth -> auth .requestMatchers("/auth/**").permitAll() // Логин доступен всем .requestMatchers("/admin/**").hasRole("ADMIN") // Админка только админам .anyRequest().authenticated() // Всё остальное - только с токеном ) // Добавляем наш кастомный фильтр для проверки JWT .addFilterBefore(new JwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); return http.build(); } } 🔓 Что такое OAuth2? JWT - это когда вы сами выдаете токены. OAuth2 - это когда токены выдает кто-то большой и доверенный (Google, Facebook, GitHub). Кнопка "Войти через Google" - это OAuth2. 1. Вы перенаправляете юзера на Google. 2. Google спрашивает: "Разрешить приложению MyShop узнать ваш email?". 3. Google возвращает вам токен. 4. Вы верите этому токену, потому что доверяете Google. В Spring Boot это настраивается буквально в 5 строк в application.yaml, но под капотом там огромная машина стандартов. 🔥 Итог: безопасность для бэкенда это: 1. Spring Security как движок. 2. JWT как пропуск. 3. Stateless режим (без сессий). 4. HTTPS (обязательно, иначе токен украдут). #SpringSecurity #JWT #OAuth2 #Java #CyberSecurity 👉 @BookJava
Если у вас установлено приложение,
вы можете сразу перейти в канал