Для упрощения запуска используются make, поэтому, чтобы воспользоваться готовым набором убедитесь, что в системе установлен make.
Для управления зависимостями и виртуальным окружением используется poetry. Прежде чем выполнять make install убедитесь, что poetry установлен и команда poetry --version работает. Если все хорошо - выполните make install.
make devSwagger-документация после запуска доступна по адресу http://localhost:8000/docs
Для получения jwt на вход, необходимо отправить POST запрос на /api/v2/users/login/ (см. swagger).
Валидации пароля нет, т.е. любой отправленный пароль система будет считать корректным. Перечень пользователей можно посмотреть в core/db.py - fake_users_db.
Шаги проверок входа пользователя:
- наличие пользователя в БД
- атрибуты otp_enabled, adfs_enabled, hardware_token_enabled - если включен хотя бы один из этих параметров - система будет ожидать MFA-стратегии входа от клиента, сейчас можно пройти только сценарий эмулирующий TOTP
- если в системе активирован otp - значением проверки otp будет текущая дата (на сервере) в формате %y%m%d, например, 250911
- если предудыщие проверки прошли или неактуальны - проверяется атрибут пользователя disabled
Примерный процесс входа по OTP

Дальнейшие запросы должны сопровождаться заголовком Authorization со значением вида JWT eyHjbG.
Подключение к машине состоит из 2х шагов:
- Запрос машины для подключения в пуле
- Запрос данных на подключение к уже созданной машины
Операции асинхронные, т.е. отправив запрос на подключение - будет создана задача, которая выполняется произвольное количество времени (но не более 90 сек.). Если задача уже создана, при повторном запросе будет возвращена она же, если задача завершилась в статусе, который допускает автоматический перезапуск - будет создана новая задача и возвращена ее информация.
Примерный процесс Шага 1 подключения к машине

Примерный процесс Шага 2 подключения к машине

Статусы задач можно и нужно отслеживать подписавшись на персонализированные ws. Адрес подписки - ws://localhost:8000/api/v2/pools/ws/{client_id}/
В качестве уникального client_id необходимо использовать значение client_id хранящийся внутри jwt в соответствующем поле, для подписки на ws необходимо передать заголовок Cookie вида JWT eyJhbG.
Пример сообщеий о статусе выполнения задач по обоим шагам подключения к машине
