Микросервис auth
Микросервис предоставляет функциональные возможности по аутентификации и авторизации пользователя.
Доступ к микросервису предоставляется по запросу.
Логика работы микросервиса
В работе микросервиса участвуют следующие сущности:
- Зарегистрированный клиент OAuth2 - содержит информацию в виде ключей доступа и конфигурации для клиента (ID, секрет и имя клиента, дата регистрации, допустимые методы аутентификации клиента, типы предоставления доступа, разрешенные области действия, настройки клиента и токена)
- Авторизация OAuth2 - содержит информацию о предоставлении доступа пользователю или организации (ID клиента, тип предоставления авторизации, разрешенные области действия, текущее состояние, данные о токенах - тип, разрешенные области действия, значение, время выдачи, истечение срока действия, метаданные)
- User Identity - содержит информацию о сущности пользователя с точки зрения аутентифкации (id, телефон, поддерживаемые типы аутентификации)
Аутентификация и авторизация
К сервису подключен механизм авторизации, доступ можно получить используя креды клиента (Basic Authorization).
Для того чтобы сгенерировать ключи доступа, нужно вызвать эндпоинт POST /api/auth/oauth2/v1/tokens
. Для отправки необходимы:
-
креды клиента в загаловке Authorization, тип Basic, постоянное значение для приложения
-
указать каким способом пользователь получит ключ доступа (возможные значения:
phone_otp
,password
,refresh_token)
-
данные в зависимосмости от того, какой выбран способ.
Service context path
/api/auth/
Настройки и параметры конфигурации микросервиса
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"POSTGRES_DATABASE": "auth",
"POSTGRES_MIGRATION_USER": "auth_migration",
"POSTGRES_PORT": "5432",
"POSTGRES_USER": "auth_user"
}
}
// пример взят с тестовго стенда
{
"env": {
"KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka",
"POSTGRES_HOST": "адрес_хоста",
"POSTGRES_MIGRATION_PASSWORD": "пароль",
"POSTGRES_PASSWORD": "пароль",
"REDIS_HOST": "хост_redis",
"REDIS_PORT": "порт_redis",
"SPRING_OAUTH_SERVER_INTERNAL_CLIENT_ID": "client_id",
"SPRING_OAUTH_SERVER_INTERNAL_CLIENT_SECRET": "client_secret"
}
}
Методы микросервиса
- Создание пользователя (если к указанному им на форме регистрации/авторизации номеру телефона не привязан существующий в системе аккаунт) - POST запрос, /v1/identities
Отсутствуют.
{
"id": "2376e78g232109",
"phone": "+7657765422",
"email": "pochta@pochta.ru"
}
{
"id": "2376e78g232109",
"phone": "+7657765422",
"email": "pochta@pochta.ru"
}
- 200 - операция выполнена успешно, создан новый пользователь
- 500 - ошибка, Internal Server Error
- Поиск пользователя в системе по номеру телефона, который был указан на форме регистрации/авторизации - GET запрос, /v1/identities/find-by-phone
phone - path-параметр, обязательный: номер телефона, указанный на форме регистрации/авторизации
{
"id": "2376e78g232109",
"phone": "+7657765422",
"email": "pochta@pochta.ru"
}
- 200 - операция выполнена успешно, получены данные пользователя
- 404 - ошибка, пользователь с таким номером телефона не найден
- 500 - ошибка, Internal Server Error