Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: security, oauth2, jwt

Как была организована интеграция с security-слоем заказчика? (Centralized Login, работа с токенами)

Вопрос направлен на выяснение опыта интеграции с централизованными системами аутентификации и авторизации, что типично для микросервисной архитектуры.

Короткий ответ

Интеграция обычно происходит через протокол OAuth 2.0 и OpenID Connect (OIDC). Приложение (микросервис) перенаправляет пользователя на центральный сервер авторизации заказчика (например, Keycloak, Auth0) для входа. После успешного входа сервер возвращает токен доступа (JWT), который микросервис проверяет и извлекает из него данные о пользователе (роли, права) для авторизации запросов.

Длинный ответ

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

Типичный поток работы (OAuth 2.0 / OIDC):

  1. Аутентификация пользователя: Пользователь пытается войти в приложение. Frontend (браузер) перенаправляет его на страницу центрального провайдера идентификации (Identity Provider, IdP) заказчика.

  2. Получение токена: После ввода логина и пароля IdP возвращает приложению JWT (JSON Web Token) токен.

  3. Использование токена: Frontend отправляет этот JWT-токен в заголовке Authorization при каждом запросе к бэкенд-микросервисам.

  4. Проверка токена в микросервисе: Каждый микросервис должен проверить валидность токена. Это включает:

    • Проверку подписи: Убедиться, что токен был подписан доверенным IdP (с помощью публичного ключа).

    • Проверку срока действия: Убедиться, что токен не просрочен.

    • Извлечение прав (Authorities): Из payload токена извлекаются роли или scope пользователя, чтобы решить, имеет ли он право на выполнение запрошенной операции.

Техническая реализация в Spring-микросервисе:
Используется Spring Security с библиотеками OAuth2 Resource Server.

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(authz -> authz
                .requestMatchers("/api/public/**").permitAll()
                .requestMatchers("/api/admin/**").hasRole("ADMIN") // Проверка роли из JWT
                .anyRequest().authenticated()
            )
            .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults())); // Включение проверки JWT
        return http.build();
    }
}

Вывод:
Интеграция через централизованный security-слой с использованием J-токенов является стандартом де-факто для микросервисов, так как она обеспечивает безопасность, масштабируемость и разделение обязанностей.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Java

    Java

Ключевые слова

#security

#oauth2

#jwt

Подпишись на Java Developer в телеграм