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

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

Микросервис guard используется для проверки реальности пользователя, использующего Android (кроме Huawei) или IOS, с помощью Google reCAPTCHA.

Логика работы Copy-icon

  1. Клиентская часть: При взаимодействии (например, нажатии кнопки) автоматически вызывается функция для генерации токена reCAPTCHA v3 на веб-сайте. Это происходит без необходимости прямого взаимодействия с пользователем. Если пользователь использует мобильное приложение (IOS, Android), то пользователя просят пройти явную проверку, что он не робот (выбрать картинки), и после пройденной проверки вызывается функция для генерации токена reCAPTCHA v2.

  2. Генерация токена: Токен (RCKey) генерируется на стороне клиента на основе анализа поведения (движения мыши, клики и т.д.).

  3. Отправка токена: Токен (RCKey) отправляется через Reverse Proxy (например, Nginx) в Auth Orchestration Service, который управляет процессом аутентификации. В рамках запроса по UserAgent определяется, с какого устройства зашел пользователь. В соответствии со значением UserAgent выполняется вызов POST-запроса на Guard Service:

    • если пользователь использует веб-сайт, то вызывается POST-запрос recaptchav3/verify;
    • если пользователь использует мобильное приложение (IOS, Android), то вызывается POST-запрос recaptchav2/verify
  4. Проверка токена: Auth Orchestration Service отправляет токен на Guard Service. Далее этот токен передается в reCAPTCHA (Bot Protected Service) POST-запросом. На этом этапе проверяется, является ли токен действительным (v2 и v3), и какова вероятность этого (score) (только для v3).

  5. Оценка: Если оценка вероятности выше установленного порога, запрос считается безопасным, и его можно обрабатывать. Если оценка низкая, можно отклонить запрос или выполнить дополнительные проверки.

В работе микросервиса используется следующие сущности:

  • CaptchaV2Request - содержит данные о каптче (reCAPTCHA v2): токен, полученный от клиента (RCKey), который необходимо проверить, и тип ключа;
  • CaptchaV2Response - ответ проверки сущности CaptchaV2Request, который указывает, была ли проверка успешной или нет;
  • CaptchaV3Request - содержит данные о каптче (reCAPTCHA v3):  токен, полученный от клиента (RCKey), который необходимо проверить;
  • CaptchaV3Response - ответ проверки сущности CaptchaV3Request, который указывает, была ли проверка успешной, а также содержит оценку вероятности того, что пользователь является человеком, и название действия, которое было передано в процессе проверки.

Аутентификация и авторизация Copy-icon

Для работы с микросервисом аутентификация и авторизация не требуются.

Service context path Copy-icon

/api/guard/

Настройки и параметры конфигурации Copy-icon

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

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

По умолчанию

{
  "env": {

    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "RECAPTCHA_SECRET_KEY": "секретный_ключ",
    "RECAPTCHA_V2_SECRET_KEYS": "секретные_ключи_RECAPTCHA_V2",
    "RECAPTCHA_V3_SECRET_KEY": "секретный_ключ_RECAPTCHA_V3"
  }
}

Copy-icon

Методы микросервиса Copy-icon

Отправка токена reCAPTCHA v2 (мобильное приложение) - POST запрос, v1/recaptchav2/verify

Request parameters
  • responseToken - параметр тела запроса, обязательный: Токен, полученный от клиента (RCKey), который необходимо проверить;
  • keyType - параметр тела запроса, необязательный: Принимает значения: default - значение по умолчанию, ios - для IOS, android - для Android. Если keyType не передан, то он принимает значение default.
Request body sample

{
  "responseToken": "RESPONSE_TOKEN",
  "keyType": "ios"
}

Copy-icon
Response sample

{
  "success": true        // Указывает, прошла ли проверка токена успешно
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, в теле ответа указан результат проверки
  • 400 - ошибка, в теле запроса не указан токен

Отправка токена reCAPTCHA v3 (web) - POST запрос, v1/recaptchav3/verify

Request parameters
  • responseToken - параметр тела запроса, обязательный: Токен, полученный от клиента (RCKey), который необходимо проверить.
Request body sample

{
  "responseToken": "RESPONSE_TOKEN"
}

Copy-icon
Response sample

{

   "success": true    // Указывает, прошла ли проверка токена успешно
  ,"score": 0.9       // Оценка вероятности, что запрос отправлен реальным пользователем (от 0.0 до 1.0)
  ,"action": "submit" // Действие, для которого выдан токен
}

Copy-icon
Response codes
  • 200 - операция выполнена успешно, в теле ответа указан результат проверки
  • 400 - ошибка, в теле запроса не указан токен