OAuth-провайдеры личного кабинета Cloud
Для входа в кабинет Cloud поддерживаются Яндекс ID, VK ID, GitHub, Google и GitLab. Каждый провайдер выключен, пока оператор не введёт его учётные данные и не включит его, поэтому у каждой установки только те провайдеры, что подходят её рынку (например, Яндекс ID и VK ID для России). Cloud API использует Authorization Code с PKCE S256, CSRF-state с привязкой к браузеру и общий для всех реплик одноразовый барьер callback. Токен провайдера нужен только для чтения identity во время callback и не сохраняется.
Реестр может менять только оператор Cloud. Публичные поля и зашифрованные версионированные write-only секреты хранит connector authority Cloud. Сырые client secret никогда не возвращаются через API или UI и не настраиваются переменными окружения.
Настраивайте провайдеров в Консоль оператора → Почтовые, платёжные и фискальные коннекторы. Пустое write-only поле сохраняет текущую immutable-версию секрета; новое значение публикует новую версию. Отключение не удаляет историю, а явный revoke навсегда запрещает использование выбранной версии.
Для интерактивного изменения нужен недавний вход в Cloud, текущий пароль или код 2FA. Изменения секретов коннекторов намеренно отклоняют API-token-аутентификацию; используйте браузерную сессию оператора со step-up-проверкой.
Команда CLI для совместимости читает секрет из окружения оператора и отправляет тот же write-only контракт. Ссылка env:// в Cloud не передаётся:
export MOCKARTY_GITHUB_CLIENT_SECRET='replace-in-your-secure-shell'
mockarty cloud-oauth-providers configure github \
--client-id your-github-client-id \
--client-secret-env MOCKARTY_GITHUB_CLIENT_SECRET \
--expected-revision 1 \
--enabled \
--idempotency-key github-oauth-20260830-1
Для новой операторской автоматизации используйте cloud-connectors configure oauth github: эта команда работает через общий ревизионный lifecycle коннекторов.
Callback строится из публичного URL Cloud:
https://cloud.example.com/api/v1/cloud/auth/oauth/PROVIDER/callback
Он должен дословно совпадать с callback в кабинете провайдера. Вне изолированного локального контура используйте HTTPS.
В production задайте CLOUD_API_OAUTH_STATE_SECRET независимо сгенерированным значением длиной не менее 32 символов и используйте одно значение на всех репликах Cloud API.
Регистрация приложения в Яндекс ID
-
Откройте Яндекс OAuth и создайте приложение типа «Веб-сервис».
-
Укажите точный callback:
https://cloud.example.com/api/v1/cloud/auth/oauth/yandex/callback -
Разрешите email и базовые данные профиля для scopes
login:email login:info. -
В Консоль оператора → Почтовые, платёжные и фискальные коннекторы введите client ID и write-only client secret, включите коннектор и сохраните его после step-up-проверки.
Регистрация приложения в VK ID
-
Откройте кабинет приложений VK ID и создайте приложение для сайта.
-
Укажите точный callback:
https://cloud.example.com/api/v1/cloud/auth/oauth/vk/callback -
Включите scope
email. -
Введите числовой ID приложения в Консоль оператора → Почтовые, платёжные и фискальные коннекторы и включите его. Mockarty работает через актуальный VK ID OAuth 2.1 и PKCE на
id.vk.ruи не отправляет устаревший client secret VK.
Не регистрируйте старый callback oauth.vk.com. В актуальном callback провайдер также возвращает device_id; Cloud прерывает обмен, если его нет.
Регистрация приложения в GitHub
Создайте OAuth App в GitHub Developer Settings, укажите callback /api/v1/cloud/auth/oauth/github/callback, затем введите client ID и write-only client secret в Консоль оператора → Почтовые, платёжные и фискальные коннекторы. Mockarty запрашивает read:user user:email и считает email подтверждённым только тогда, когда GitHub помечает его одновременно primary и verified.
Регистрация приложения в Google
- Откройте консоль Google Cloud и создайте OAuth-клиент типа Web application.
- Укажите ровно этот redirect URI:
https://<ваш-хост-cloud>/api/v1/cloud/auth/oauth/google/callback
- Введите client ID и client secret в Консоль оператора → Почтовые, платёжные и фискальные коннекторы. Mockarty запрашивает
openid email profileи считает адрес подтверждённым только когда Google отдаётemail_verified.
Регистрация приложения в GitLab
- В GitLab откройте User settings → Applications (либо приложение группы или инстанса) и создайте приложение со скоупом
read_user. - Укажите ровно этот redirect URI:
https://<ваш-хост-cloud>/api/v1/cloud/auth/oauth/gitlab/callback
- Введите application ID и secret в Консоль оператора → Почтовые, платёжные и фискальные коннекторы. Основной email из GitLab уже подтверждён на его стороне, поэтому аккаунт активируется сразу.
Просмотр, ротация и отключение
UI оператора показывает публичную конфигурацию, ревизию, факт настройки секрета и результат последнего ограниченного теста; значение секрета никогда не отображается. Для ротации введите новый секрет, сохраните новую immutable-версию, протестируйте её и проверьте полный вход. Отключите коннектор, чтобы остановить новые входы. Старую версию отзывайте только после завершения её callback-ов: revoke необратим.
Оставьте пароль и двухфакторную аутентификацию как резервный путь. В панели Безопасность и аккаунт → Способы входа внешняя identity привязывается и отвязывается только после step-up. Для удаления последнего внешнего способа Cloud всегда запрашивает текущий пароль; OAuth-only аккаунту сначала нужно добавить другой способ или задать локальный пароль через восстановление. Cloud записывает в audit chain привязки, отвязки, step-up и изменения реестра провайдеров.