Security, Authorization и Authentication (Keycloak)
В этом уроке мы реализуем идентификацию, аутентификацию и авторизацию пользователей в приложении, а также настроим Role Based Access Control (RBAC) - доступ к
ресурсам на основе ролей.
Идентификация, аутентификация и авторизация являются критически важными аспектами безопасности в микросервисной архитектуре. Они обеспечивают правильный доступ к
ресурсам, контролируя, кто и что может делать в системе. Рассмотрим каждую из этих концепций подробно:
Ошибка приложения
Идентификация
Идентификация - это процесс определения личности пользователя или сервиса. В контексте микросервисной архитектуры это может быть сделано несколькими способами:- User ID (Идентификатор пользователя). Каждый пользователь или сервис получает уникальный идентификатор.
- Tokens (Токены). JSON Web Tokens (JWT) или OAuth2 tokens часто используются для идентификации пользователя или сервиса в распределенной системе.
Аутентификация
Аутентификация - это процесс подтверждения личности пользователя или сервиса, который заявляет о своей идентичности. В микросервисной архитектуре могут быть использованы различные методы аутентификации:- Аутентификация на основе пароля: пользователь вводит имя пользователя и пароль, которые проверяются сервером аутентификации.
- OAuth 2.0. Это широко используемый стандарт для аутентификации и авторизации, особенно в сценариях с микросервисами. OAuth 2.0 позволяет приложению (клиенту) получать ограниченный доступ к защищённым ресурсам с помощью токенов доступа.
- OpenID Connect. Расширение OAuth 2.0 для аутентификации, которое возвращает информацию о пользователе.
- SAML (Security Assertion Markup Language). Используется для обмена аутентификационной и авторизационной информацией между несколькими сторонами.
- Multi-factor Authentication (Многофакторная аутентификация). Использование нескольких методов для подтверждения личности, таких как комбинация пароля и одноразового кода (OTP).
Авторизация
Авторизация - это процесс определения прав и привилегий пользователя или сервиса после их аутентификации. В микросервисной архитектуре авторизация может быть реализована различными способами:- Role-Based Access Control (RBAC): назначение ролей пользователям и определение прав доступа на основе этих ролей.
- Attribute-Based Access Control (ABAC): использование атрибутов (например, департамент (отдел, команда) пользователя, его местоположение и т.д.) для определения доступа.
- OAuth 2.0 Scopes: определение областей доступа (scopes) для токенов, которые ограничивают доступ к определённым ресурсам.
- Policy-Based Access Control (PBAC): использование политик для контроля доступа к ресурсам на основе различных критериев.
Технологии, используемые в проекте
В нашем проекте мы будем придерживаться следующего подхода:- В качестве сервера идентификации, аутентификации и авторизации выступит Keycloak.
- Аутентификация пользователей будет происходить по протоколу OpenID Connect (OIDC).
- Авторизация пользователей будет осуществляться по протоколу OAuth 2.0 с помощью токенов доступа, представленных в формате JWT (Json Web Tokens).
200 OK