Микросервис auth-orchestration

В статье описываются функции, логика работы, конфигурация и методы микросервиса auth-orchestration.

Микросервис auth-orchestration выступает в роли сервера авторизации OAuth2. Он также отправляет одноразовые пароли для регистрации и авторизации в системе. Этот микросервис хранит информацию об отправленных кодах, осуществляет аудит данных и сравнивает одноразовый пароль с кодом, который был ему отправлен.

Доступ к сервису предоставляется по запросу.

В работе микросервиса участвуют следующие сущности:

  • Временный код - содержит данные для верификации пользователя по одноразовому паролю, который был отправлен через sms или звонок (номер телефона, код, время выдачи, истечение срока действия, количество попыток соответствия, тип отправки временного кода, область использования)
  • Зарегистрированный клиент OAuth2 - содержит информацию в виде ключей доступа и конфигурации для клиента (ID, секрет и имя клиента, дата регистрации, допустимые методы аутентификации клиента, типы предоставления доступа, разрешенные области действия, настройки клиента и токена)
  • Авторизация OAuth2 - содержит информацию о предоставлении доступа пользователю или организации (ID клиента, тип предоставления авторизации, разрешенные области действия, текущее состояние, данные о токенах - тип, разрешенные области действия, значение, время выдачи, истечение срока действия, метаданные)
  • User Identity - содержит информацию о сущности пользователя с точки зрения аутентифкации (id, телефон, поддерживаемые типы аутентификации)

Сервис наследует механизм авторизации сервиса auth. Доступ можно получить используя данные клиента (приложения).

/api/auth-orchestration/

Параметры конфигурации указываются в Vault.

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

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "LOGGING_LEVEL": "уровень_логирования",
    "SERVER_PORT": "порт_сервера"

  }
}


Copy-icon
Указываемые на каждом отдельном стенде

// пример взят с тестового стенда


{
  "env": {
    "AUTH_URL": "url_путь_доступа_к_сервису_auth",
    "KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
    "OTP_VERIFIER_URL": "url_путь_доступа_к_сервису_otp-verifier"
  }
}



Copy-icon

Отправка кода верификации пользователю - POST запрос, /v1/auth/send-otp

Request parameters

Отсутствуют.

Request body sample

{
  "phone": "+7(111)1111111",
  "sendType": "sms",
  "usageType": "authorize"
}
Copy-icon
Response sample

{
  "nextAttemptTimestamp": 0,
  "nextAttemptDelay": 0
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, код верификации отправлен
  • 400 - ошибка, не удалось отправить код верификации
  • 401 - ошибка, unauthorized 
  • 403 - ошибка, нет доступа к сервису
  • 500 - ошибка,  Internal Server Error

Отозвать и обновить время дейтсвия токенов - POST запрос, /v1/auth/revoke-token

Request parameters

Отсутствуют.

Request body sample

{
  "token": "тут_токен",
  "token_type_hint": "access_token"
}
Copy-icon
Response sample

Отсутсвуют. В ответе приходит только код операции, например 204.

Response codes
  • 204 - операция выполнена успешно, токен отозван
  • 400 - ошибка, не удалось отозвать токен
  • 401 - ошибка, unauthorized 
  • 403 - ошибка, нет доступа к сервису
  • 500 - ошибка,  Internal Server Error

Генерация токенов через проверку одноразового пароля - POST запрос, /v1/auth/login-by-otp

Request parameters

Отсутствуют.

Request body sample
{
  "phone": "+7(111)1111111",
  "otp": "1111"
}
Copy-icon
Response sample

  "access_token": "тут_токен",
  "refresh_token": "тут_токен",
  "token_type": "Bearer",
  "expires_in": 86399
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, токены сгенерированы
  • 400 - ошибка, не удалось сгенерировать токены
  • 401 - ошибка, unauthorized 
  • 403 - ошибка, нет доступа к сервису
  • 500 - ошибка,  Internal Server Error

Генерация токенов на основее сервера авторизации - POST запрос, /v1/auth/generate-tokens

Request parameters

Отсутствуют.

Request body sample

{
  "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": "секрет_клиента"
}
Copy-icon
Response sample

  "access_token": "тут_токен",
  "refresh_token": "тут_токен",
  "token_type": "Bearer",
  "expires_in": 86399
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно, токены сгенерированы
  • 400 - ошибка, не удалось сгенерировать токены
  • 401 - ошибка, unauthorized 
  • 403 - ошибка, нет доступа к сервису
  • 500 - ошибка,  Internal Server Error

Связанные статьи

 Микросервисы