Микросервис 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

Методы микросервиса 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