Security, Authorization и Authentication (Keycloak)

В этом уроке мы реализуем идентификацию, аутентификацию и авторизацию пользователей в приложении, а также настроим Role Based Access Control (RBAC) - доступ к ресурсам на основе ролей.

Идентификация, аутентификация и авторизация являются критически важными аспектами безопасности в микросервисной архитектуре. Они обеспечивают правильный доступ к ресурсам, контролируя, кто и что может делать в системе. Рассмотрим каждую из этих концепций подробно:

Технологии, используемые в проекте

В нашем проекте мы будем придерживаться следующего подхода:
  1. В качестве сервера идентификации, аутентификации и авторизации выступит Keycloak.
  2. Аутентификация пользователей будет происходить по протоколу OpenID Connect (OIDC).
  3. Авторизация пользователей будет осуществляться по протоколу OAuth 2.0 с помощью токенов доступа, представленных в формате JWT (Json Web Tokens).

Доступ после оплаты курса


Общая информация

  • Основные определения
  • JWT
  • OAuth 2.0
  • OpenID Connect

Keycloak

  • Запуск и настройка Keycloak
  • ДЗ: экспорт конфигурации и запуск уже настроенного Keycloak

OpenID Connect Authorization Code Flow
(урок для ознакомления)

Обновление Docker Deployment и тестирование через браузер

  • Обновление Docker Deployment микросервисов
  • Тестирование OpenID Connect Authorization Code Flow

Gateway Service как OAuth 2.0 сервер ресурсов

  • Диаграммы последовательности Gateway Service как сервера ресурсов
  • Конфигурация Gateway Service как сервера ресурсов
  • Тестирование OAuth 2.0 запросов через Postman
  • Тестирование OAuth 2.0 запросов через curl

В этом уроке мы
  • подробно рассмотрели, что такое идентификация, аутентификация и авторизация
  • разобрали механизм OAuth 2.0 и основанный на нем OpenID Connect
  • в ветке security_client настроили Spring Cloud Gateway в качестве OAuth 2.0 клиента, а остальные микросервисы - в качестве серверов ресурсов и протестировали микросервисы с помощью TestContainers Keycloak
  • настроили Gateway Service в качестве сервера ресурсов, который обрабатывает токены JWT, извлекая из них имя пользователя и с помощью кастомного фильтра отправляет его в другие микросервисы в заголовке
Урок получился насыщенным и сложным, как, собственно, вся тема безопасности микросервисов.
Не пренебрегайте исходным кодом Spring Security, он содержит неплохую документацию и комментарии разработчиков - это позволит вам глубже понять, как все устроено изнутри.
Занятие 13: Observability и Monitoring