Микросервис auth-orchestration
Микросервис auth-orchestration выступает в роли сервера авторизации OAuth2. Он также отправляет одноразовые пароли для регистрации и авторизации в системе. Этот микросервис хранит информацию об отправленных кодах, осуществляет аудит данных и сравнивает одноразовый пароль с кодом, который был ему отправлен.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса участвуют следующие сущности:
- Временный код - содержит данные для верификации пользователя по одноразовому паролю, который был отправлен через sms или звонок (номер телефона, код, время выдачи, истечение срока действия, количество попыток соответствия, тип отправки временного кода, область использования)
- Зарегистрированный клиент OAuth2 - содержит информацию в виде ключей доступа и конфигурации для клиента (ID, секрет и имя клиента, дата регистрации, допустимые методы аутентификации клиента, типы предоставления доступа, разрешенные области действия, настройки клиента и токена)
- Авторизация OAuth2 - содержит информацию о предоставлении доступа пользователю или организации (ID клиента, тип предоставления авторизации, разрешенные области действия, текущее состояние, данные о токенах - тип, разрешенные области действия, значение, время выдачи, истечение срока действия, метаданные)
- User Identity - содержит информацию о сущности пользователя с точки зрения аутентифкации (id, телефон, поддерживаемые типы аутентификации)
Аутентификация и авторизация
Сервис наследует механизм авторизации сервиса auth. Доступ можно получить используя данные клиента (приложения).
Service context path
/api/auth-orchestration/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"LOGGING_LEVEL": "уровень_логирования",
"SERVER_PORT": "порт_сервера"
}
}
// пример взят с тестового стенда
{
"env": {
"AUTH_URL": "url_путь_доступа_к_сервису_auth",
"KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
"OTP_VERIFIER_URL": "url_путь_доступа_к_сервису_otp-verifier"
}
}
Методы микросервиса
Отправка кода верификации пользователю - POST запрос, /v1/auth/send-otp
Отсутствуют.
{
"phone": "+7(111)1111111",
"sendType": "sms",
"usageType": "authorize"
}
{
"nextAttemptTimestamp": 0,
"nextAttemptDelay": 0
}
- 200 - операция выполнена успешно, код верификации отправлен
- 400 - ошибка, не удалось отправить код верификации
- 401 - ошибка, unauthorized
- 403 - ошибка, нет доступа к сервису
- 500 - ошибка, Internal Server Error
Отозвать и обновить время дейтсвия токенов - POST запрос, /v1/auth/revoke-token
Отсутствуют.
{
"token": "тут_токен",
"token_type_hint": "access_token"
}
Отсутсвуют. В ответе приходит только код операции, например 204.
- 204 - операция выполнена успешно, токен отозван
- 400 - ошибка, не удалось отозвать токен
- 401 - ошибка, unauthorized
- 403 - ошибка, нет доступа к сервису
- 500 - ошибка, Internal Server Error
Генерация токенов через проверку одноразового пароля - POST запрос, /v1/auth/login-by-otp
Отсутствуют.
{
"phone": "+7(111)1111111",
"otp": "1111"
}
"access_token": "тут_токен",
"refresh_token": "тут_токен",
"token_type": "Bearer",
"expires_in": 86399
}
- 200 - операция выполнена успешно, токены сгенерированы
- 400 - ошибка, не удалось сгенерировать токены
- 401 - ошибка, unauthorized
- 403 - ошибка, нет доступа к сервису
- 500 - ошибка, Internal Server Error
Генерация токенов на основее сервера авторизации - POST запрос, /v1/auth/generate-tokens
Отсутствуют.
{
"clientId": "client_name",
"clientSecret": "client_secret",
"username": "some.user@any.domain",
"password": "12345678",
"phone": "+7(111)1111111",
"otp": "1234",
"grant_type": "password",
"refresh_token": "token_value",
"client_id": "id_клиента",
"client_secret": "секрет_клиента"
}
"access_token": "тут_токен",
"refresh_token": "тут_токен",
"token_type": "Bearer",
"expires_in": 86399
}
- 200 - операция выполнена успешно, токены сгенерированы
- 400 - ошибка, не удалось сгенерировать токены
- 401 - ошибка, unauthorized
- 403 - ошибка, нет доступа к сервису
- 500 - ошибка, Internal Server Error