Основные концепции
Перед началом работы с Авторизой рекомендуется ознакомиться с основными сущностями системы и связями между ними.
Авториза разделяет понятия пользователя и его представления внутри проектов. Это позволяет изолировать данные между проектами и использовать единый механизм аутентификации для различных приложений.
Структура клиента
Клиент управляет проектами и приложениями.
Клиент
│
├── Проект A
│ ├── Приложение A1
│ └── Приложение A2
│
└── Проект B
├── Приложение B1
└── Приложение B2
Проекты изолированы друг от друга и имеют собственные настройки, пользователей и данные.
Структура пользователя
Пользователь может использовать несколько проектов.
Для каждого проекта создается отдельный профиль пользователя.
Пользователь
│
├── Профиль в Проекте A
│ ├── Приложение A1
│ └── Приложение A2
│
└── Профиль в Проекте B
├── Приложение B1
└── Приложение B2
Приложения не работают напрямую с пользователем. После аутентификации они получают доступ только к профилю пользователя внутри своего проекта.
Клиент (Client)
Клиент — организация или разработчик, использующие Авторизу для своих продуктов.
Клиент управляет проектами, приложениями и настройками интеграции.
Один клиент может иметь несколько проектов.
Проект (Project)
Проект объединяет приложения, использующие общую систему аутентификации и единый вход.
Все приложения одного проекта работают с одними и теми же профилями пользователей.
Например, в один проект могут входить:
- основной сайт;
- мобильное приложение;
- административная панель;
- публичный API.
Пользователь проходит аутентификацию один раз и может использовать все приложения проекта без повторного ввода учетных данных.
Приложение (App)
Приложение — отдельная система, подключенная к Авторизе.
Приложением может быть:
- веб-приложение;
- SPA;
- мобильное приложение;
- серверное приложение;
- API.
Каждое приложение имеет собственные параметры подключения и идентифицируется в Авторизе отдельно.
Несколько приложений могут принадлежать одному проекту.
Пользователь (User)
Пользователь — человек, использующий приложения клиента.
Пользователь проходит аутентификацию через Авторизу и получает доступ к приложениям проекта.
Пользователь является глобальной сущностью системы и может использовать несколько проектов.
Профиль (Profile)
Профиль — изолированное представление пользователя внутри конкретного проекта.
Именно профиль является субъектом идентификации и авторизации для приложений проекта.
После успешной аутентификации приложения получают информацию о профиле пользователя и работают с ним на протяжении всей сессии.
Каждый профиль принадлежит только одному проекту и недоступен другим проектам.
Зачем нужны профили
Профили позволяют изолировать данные пользователя между различными проектами.
Например, один и тот же пользователь может использовать:
- интернет-магазин;
- образовательную платформу;
- корпоративный портал.
Каждый из этих сервисов будет работать со своим профилем пользователя.
Пользователь
│
├── Профиль интернет-магазина
│
├── Профиль образовательной платформы
│
└── Профиль корпоративного портала
При этом:
- каждый проект видит только собственный профиль пользователя;
- проекты не имеют доступа к профилям друг друга;
- связь между профилями разных проектов недоступна приложениям.
Идентификатор профиля
Каждый профиль имеет собственный уникальный идентификатор (UUID).
Этот идентификатор используется для идентификации пользователя внутри проекта и передается в токенах и API.
Пример содержимого токена:
{
"sub": "4fb3e1af-6e34-4ef1-b4f0-0f2c2b2d6c65"
}
Поле sub содержит идентификатор профиля, а не глобальный идентификатор пользователя.
Приложения должны использовать значение sub как основной идентификатор пользователя внутри проекта.
Не рекомендуется использовать адрес электронной почты в качестве идентификатора пользователя, поскольку он может изменяться в процессе использования системы.
Связи между сущностями
- Один Клиент может иметь несколько Проектов.
- Один Проект может содержать несколько Приложений.
- Один Проект может содержать множество Профилей.
- Один Пользователь может иметь профили в разных Проектах.
- Каждый Профиль принадлежит только одному Проекту.
- Приложения работают только с профилями своего Проекта.
- Идентификатор профиля (
sub) является основным идентификатором пользователя внутри проекта.