Security, Authorization и Authentication (Keycloak)
В этом уроке мы реализуем идентификацию, аутентификацию и авторизацию пользователей в приложении, а также настроим Role Based Access Control (RBAC) - доступ к
ресурсам на основе ролей.
Идентификация, аутентификация и авторизация являются критически важными аспектами безопасности в микросервисной архитектуре. Они обеспечивают правильный доступ к
ресурсам, контролируя, кто и что может делать в системе. Рассмотрим каждую из этих концепций подробно:
OpenID Connect Authorization Code Flow
В этом уроке мы
Не пренебрегайте исходным кодом Spring Security, он содержит неплохую документацию и комментарии разработчиков - это позволит вам глубже понять, как все устроено изнутри.
Занятие 13: Observability и Monitoring
Технологии, используемые в проекте
В нашем проекте мы будем придерживаться следующего подхода:- В качестве сервера идентификации, аутентификации и авторизации выступит Keycloak.
- Аутентификация пользователей будет происходить по протоколу OpenID Connect (OIDC).
- Авторизация пользователей будет осуществляться по протоколу OAuth 2.0 с помощью токенов доступа, представленных в формате JWT (Json Web Tokens).
Общая информация
- Основные определения
- JWT
- OAuth 2.0
- OpenID Connect
Keycloak
- Запуск и настройка Keycloak
- ДЗ: экспорт конфигурации и запуск уже настроенного Keycloak
OpenID Connect Authorization Code Flow
(урок для ознакомления)
- Диаграммы последовательности Gateway Service как клиента Keycloak
- Настройка Gateway Service как клиента Keycloak
- Защита от CSRF-атак
- Настройка и тестирование микросервисов. TestContainers Keycloak
Обновление 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