# Интеграция быстрого логина через OTP с помощью кода авторизации пользователя
При интеграции портала технической поддержки в стороннее приложение возникает задача быстрой и прозрачной авторизации пользователя в Swarmica.

Swarmica позволяет подключить прозрачную авторизацию приложения через шифр-пароль, полученный для заданного пользователя с помощью фиксированного алгоритма OTP (one-time-password, одноразовый пароль)

### Алгоритм авторизации

![](/attachments/6/u/6ubPXiLAZ79BpWsS_a/Swarmica_OTP_Code_Auth.jpg)

1.  При успешной регистрации / авторизации в интегрируемом приложении, бэкенд приложения выполняет API вызов /api/auth/otp/code/request, передавая данные пользователя, для которого нужно создать код авторизации. Параметры вызова аналогичны API вызову [Создать пользователя](https://support.swarmica.com/api/schema/doc/#post-/api/users/).&#x20;
2.  Swarmica находит существующего пользователя с такими данными или же создает новую учетную запись и отдает код авторизации и данные пользователя в ответе.
3.  Фронтенд интегрируемого приложения отображает ссылку, которая должна вести на портал Swarmica:
    `https://swarmica_address_tld/auth/otp/code/?data=...&errorUrl=...&redirectUrl=...`
4.  При переходе по ссылке, Swarmica:
    1.  В случае успешной авторизации, либо перенаправляет пользователя на указанный **redirectUrl**, если данный параметр указан, или переводит на базовую страницу внутри Swarmica, соответствующую роли пользователя
    2.  В случае ошибки, если указан параметр **errorUrl**, Swarmica перенаправляет пользователя туда, передав **errorMessage** в параметры ссылки. Если параметр не указан, то ошибка отображается на странице авторизации Swarmica.

### Алгоритм формирования ссылки

Ссылка на фронтенде интегрируемого приложения должна состоять из:

*   Адрес портала Swarmica (`https://swarmica__address__tld`)
*   URI страницы авторизации через OTP code (`/auth/otp/code`)
*   Параметры:
    *   **data** - обязательный параметр, содержащий авторизационный шифр в URLEncoded виде
    *   **errorUrl** - URLEncoded адрес, куда пользователя перенаправит в случае ошибки авторизации, необязательный параметр. Сообщение об ошибке будет передано в параметре errorMessage  для данной ссылки
        :::tip
        Например, если `errorUrl=https%3A%2F%2Fswarmica.ru`, то в случае ошибки `Request failed with status code 404` пользователь будет перенаправлен на адрес `https://swarmica.ru?Request%20failed%20with%20status%20code%20404`
        :::
    *   **redirectUrl** - URLEncoded адрес, куда пользователя перенаправит в случае успешной авторизации, необязательный параметр

### Алгоритм шифрования

Для корректной авторизиции пользователя необходимо зашифровать JSON данные с помощью фиксированного алгоритма шифрования:

```json
{
  "email": "someuser@email.tld",
  "code": "user_auth_code",
  "timestamp": 1742907325
}
```

Для получения подробной инструкции обратитесь в поддержку Swarmica