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

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

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

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

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

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

К сервису подключен механизм авторизации, доступ можно получить используя креды клиента (Basic Authorization).

Для того чтобы сгенерировать ключи доступа, нужно вызвать эндпоинт POST /api/auth/oauth2/v1/tokens. Для отправки необходимы:

  • креды клиента в загаловке Authorization, тип Basic, постоянное значение для приложения

  • указать каким способом пользователь получит ключ доступа (возможные значения: phone_otppasswordrefresh_token)

  • данные в зависимосмости от того, какой выбран способ.

/api/auth/

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

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

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "LOGGING_LEVEL": "уровень_логирования",
    "POSTGRES_DATABASE": "auth",
    "POSTGRES_MIGRATION_USER": "auth_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "auth_user",
    "SERVER_PORT": "порт_сервера"
  }
}

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

{
  "env": {

    "OTP_VERIFIER_URL": "url_доступа_к_сервису_otp-verifier",
    "POSTGRES_HOST": "test-ecom-master.int.digitalchief.tech",
    "POSTGRES_HOST": "адрес_хоста",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль",
    "SPRING_OAUTH_SERVER_INTERNAL_CLIENT_ID": "client_id",
    "SPRING_OAUTH_SERVER_INTERNAL_CLIENT_SECRET": "client_secret",
    "SPRING_OAUTH_SERVER_ISSUER": "поставщик_OAuth-сервера"
  }
}

Copy-icon
  • Создание пользователя, если к указанному им на форме регистрации/авторизации номеру телефона не привязан существующий в системе аккаунт - POST запрос, /v1/identities
Request parameters

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

Request body sample

{
  "id": "2376e78g232109",
  "phone": "+7657765422",
  "email": "pochta@pochta.ru"
}

Copy-icon
Response sample

{
  "id": "2376e78g232109",
  "phone": "+7657765422",
  "email": "pochta@pochta.ru"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, создан новый пользователь
  • 500 - ошибка, Internal Server Error
  • Поиск пользователя в системе по номеру телефона, который был указан на форме регистрации/авторизации - GET запрос, /v1/identities/find-by-phone
Request parameters

phone - path-параметр, обязательный: номер телефона, указанный на форме регистрации/авторизации

Copy-icon
Response sample

{
  "id": "2376e78g232109",
  "phone": "+7657765422",
  "email": "pochta@pochta.ru"
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные пользователя
  • 404 - ошибка, пользователь с таким номером телефона не найден
  • 500 - ошибка, Internal Server Error

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

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