Перейти к содержанию

Authorization service

Обзор

Данный сервис предназначен для централиозованного управления пользователями системы и разграничения доступа к облачным сервисам.

Список функций, реализуемых данным сервисом в рамках системы:

  • Управление клиентами (Merchants and permissions)
  • Проверка ключей клиентов и генерация токенов доступа (Permission Tokens)
  • Создание пользователей (Users and permissions)
  • Управление факторами безопасности (Security Factors)
  • Проверка факторов безопасности и генерация токенов безопасности (Security Tokens)
  • Проверка токенов безопасности и генерация токенов доступа (Permission Tokens)

Основные понятия и термины

Клиент (merchant)

Организация или частное лицо - пользователь облака и имеющее назначенный идентификатор клиента и соответствующие ему ключи клиента аттрибуирующие запросы к облачным сервисам данному клиенту. Все аккаунты пользователей системы, созданные клиентом однозначно привязываются к клиенту при создании при помощи идентификатора клиента.

Идентификатор клиента (merchantId)

Уникальный UUID, присваеваемый клиенту при создании, служит для идентификации клиента в системе.

Ключ клиента (merchantKey)

API ключ, привязанный к определенному идентификатору клиента и имеющий регулируемый список прав доступа дающих доступ к определенному функционалу облачных сервисов. Для каждого клиента возможно создание нескольких ключей с разными правами доступа, а также их ротация.

Аккаунт пользователя (account)

Конечный пользователь системы, совершающий запросы к API через посредство клиента. Каждому аккаунту пользователя назначается уникальный идентификатор аккаунта при создании, а также закрепляется создавший его клиент. Для получения доступа к функционалу облака от имени аккаунта пользователя необходимо выполнять проверку факторов безопасности данного пользователя.

Идентификатор аккаунта (accountId)

Уникальный UUID, присваиваемый аккаунту пользователя при создании служит для идентификации аккаунта пользователя в системе.

Факторы безопасности (securityFactors)

Набор предоставляемых пользователем данных, одновременно идентифицирующих его в системе и подтверждающих владение аккаунтом. Предоставив достаточный набор верных факторов безопасности, пользователь может получить определенные права доступа в системе. Конкретный набор требуемых факторов зависит от запрашиваемых прав. Для получения токена доступа при помощи факторов безопасности необходимо сначала получить токен безопасности для каждого предъявляемого фактора безопасности.

Фактор реквизитов (credentialsFactor)

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

Имя пользователя (username)

Регистро-независимая, уникальная в рамках системы utf-8 строка.

Пароль (password)

Регистро-зависимая utf-8 строка.

Фактор почты (emailFactor)

Фактор владения адресом электронной почты, идентифицирующий аккаунт по уникальному адресу электронной почты. Верифицирует владение аккаунтом при помощи подтверждения владения почтой посредством ввода проверочного кода отправленного на указанный адрес. Подтверждение происходит в два этапа: первый запрос отправляет письмо с проверочным кодом, a второй проверяет соответствие кода и выпускает токен безопасности.

Почта (email)

Регистро-независимый, уникальный в рамках системы существующий email-адрес.

Проверочный код (confirmationCode)

Шестизначный цифровой проверочный код, высылаемый на адрес электронной почты для проверки владения.

Токен безопасности (securityToken)

Короткоживущий JWT-токен, подтверждающий успешную проверку определенного фактора безопасности. Содержит информацию о конкретном типе фактора и привязку к пользователю.

Права доступа (permissions)

Набор дескрипторов API, перечисляющих секции API, к которым дается доступ. Например, право доступа read дает доступ к секциям API облачных сервисов, отмеченных дескриптором read.

На текущий момент поддерживается следующий список возможных прав:

Токен доступа (permissionToken)

Короткоживущий JWT-токен, содержащий список прав доступа которые он предоставляет. Может быть как аттрибуированым к аккаунту пользователя при помощи его идентификатора так и нет, но в любом случае содержит идентификатор клиента. Генерируется, соответственно, двумя способами: при предъявлении пользователем корректных токенов безопасности (в таком случае токен привязан к аккаунт) или при предъявлении клиентом ключа клиента (в таком случае токен привязан только к клиенту). Некоторые права доступа можно получить только при помощи факторов (например security, для модификации факторов безопасности пользователем), а некоторые - только при помощи ключа клиента (например register, для создания новых аккаунтов пользователя).

Токен обновления (permissionRefreshToken)

Долгоживущий JWT-токен, позволяющий обновлять токен доступа без предъявления чувствительных данных.