Документация OAuth-провайдеры Cloud

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

  1. Откройте Яндекс OAuth и создайте приложение типа «Веб-сервис».

  2. Укажите точный callback:

    https://cloud.example.com/api/v1/cloud/auth/oauth/yandex/callback
    
  3. Разрешите email и базовые данные профиля для scopes login:email login:info.

  4. В Консоль оператора → Почтовые, платёжные и фискальные коннекторы введите client ID и write-only client secret, включите коннектор и сохраните его после step-up-проверки.

Регистрация приложения в VK ID

  1. Откройте кабинет приложений VK ID и создайте приложение для сайта.

  2. Укажите точный callback:

    https://cloud.example.com/api/v1/cloud/auth/oauth/vk/callback
    
  3. Включите scope email.

  4. Введите числовой 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

  1. Откройте консоль Google Cloud и создайте OAuth-клиент типа Web application.
  2. Укажите ровно этот redirect URI:
https://<ваш-хост-cloud>/api/v1/cloud/auth/oauth/google/callback
  1. Введите client ID и client secret в Консоль оператора → Почтовые, платёжные и фискальные коннекторы. Mockarty запрашивает openid email profile и считает адрес подтверждённым только когда Google отдаёт email_verified.

Регистрация приложения в GitLab

  1. В GitLab откройте User settings → Applications (либо приложение группы или инстанса) и создайте приложение со скоупом read_user.
  2. Укажите ровно этот redirect URI:
https://<ваш-хост-cloud>/api/v1/cloud/auth/oauth/gitlab/callback
  1. Введите application ID и secret в Консоль оператора → Почтовые, платёжные и фискальные коннекторы. Основной email из GitLab уже подтверждён на его стороне, поэтому аккаунт активируется сразу.

Просмотр, ротация и отключение

UI оператора показывает публичную конфигурацию, ревизию, факт настройки секрета и результат последнего ограниченного теста; значение секрета никогда не отображается. Для ротации введите новый секрет, сохраните новую immutable-версию, протестируйте её и проверьте полный вход. Отключите коннектор, чтобы остановить новые входы. Старую версию отзывайте только после завершения её callback-ов: revoke необратим.

Оставьте пароль и двухфакторную аутентификацию как резервный путь. В панели Безопасность и аккаунт → Способы входа внешняя identity привязывается и отвязывается только после step-up. Для удаления последнего внешнего способа Cloud всегда запрашивает текущий пароль; OAuth-only аккаунту сначала нужно добавить другой способ или задать локальный пароль через восстановление. Cloud записывает в audit chain привязки, отвязки, step-up и изменения реестра провайдеров.