04 июл. 2025 г.·8 мин

API‑ключи против OAuth 2.0 для интеграций партнёров: что меняется

API‑ключи против OAuth 2.0: сравните затраты на онбординг, ротацию токенов, доступ на уровне пользователя и возможности аудита, чтобы партнёрские разработчики могли безопасно интегрироваться.

API‑ключи против OAuth 2.0 для интеграций партнёров: что меняется

Что вы на самом деле выбираете, когда выбираете способ авторизации

Когда люди сравнивают API‑ключи и OAuth 2.0, это звучит как чисто вопрос безопасности. Для интеграций с партнёрами это также операционное решение: как быстро партнёры смогут начать работу, как вы будете контролировать доступ позже и насколько болезненной будет поддержка, когда что‑то пойдёт не так.

Большинству интеграций нужны одни и те же базовые вещи: надёжная аутентификация, чёткие границы (лимиты запросов и разрешения) и прослеживаемость, чтобы можно было ответить «кто что сделал» без догадок. Выбранный метод авторизации определяет, будут ли эти требования выполняться по умолчанию или придётся допиливать их через дополнительные правила, дашборды и ручные процессы.

Пара простых терминов помогает сделать разговор практичным:

  • API‑ключ: общий секрет, который идентифицирует приложение или систему партнёра.
  • Токен: временное учётное средство для вызовов API.
  • Scope: именованное разрешение, например «читать счета» или «создавать тикеты».

Реальное решение — в том, от чьего имени действует интеграция.

Если это машина‑к‑машине, API‑ключ часто подходит. Например: партнёр запускает ночную синхронизацию со своего сервера в ваш API. Нет конечного пользователя, который нажимает «Разрешить». Обычно важен доступ на уровне партнёра, предсказуемая ротация и быстрый онбординг.

Если это делегированный доступ от пользователя, обычно подходит OAuth 2.0. Например: клиент подключает свой аккаунт в приложении партнёра, и каждый клиент должен давать доступ только к своим данным. Тогда важны права на уровне пользователя, простота отзыва и более чистые журналы аудита.

Этот выбор меняет нагрузку на поддержку. С ключами вы будете тратить больше времени на передачу ключей, координацию ротации и отслеживание, какому окружению партнёра принадлежит ключ. С OAuth вы будете работать с потоками согласия и настройкой redirect, но тратить меньше времени на угадывания, какой человек или тенант вызвал действие.

Если вы строите интеграционный бэкенд в инструменте вроде AppMaster, планируйте аутентификацию заранее. Это влияет на модель данных (партнёры, пользователи, scopes) и на логи аудита, которые вы захотите иметь с первого дня.

Как работают API‑ключи в партнёрских интеграциях

API‑ключи — самый простой способ разрешить партнёру вызывать ваш API. Ключи обычно выигрывают по скорости: вы даёте секретную строку, партнёр включает её в запросы, и обмен данными начинается.

Что представляет собой ключ

Чаще всего API‑ключ означает приложение партнёра (или интеграцию), а не конкретного конечного пользователя. Если у партнёра один ключ для всей команды и всех их клиентов, с вашей стороны все запросы выглядят одинаково: «Партнёр X». Это упрощает настройку, но делает доступ грубым.

На практике ключи выдаются в админ‑консоли или через одноразовый provisioning. Партнёры хранят их в конфигурации, переменных окружения или менеджерах секретов. Риск в том, что «временный» ключ часто оказывается скопированным в общую таблицу, вставленным в чат или вшитым в клиентский код.

Ограничения проявляются быстро. Права обычно широкие, ключи — общие учётные данные (поэтому нельзя уверенно отнести действия к человеку), ротация требует координации, а утечка ключа позволяет злоумышленнику действовать от имени партнёра до отзыва.

Пример: логистический партнёр запускает ночной импорт с сервера. Используя один API‑ключ, он вытягивает заказы и отправляет обновления статусов. Когда что‑то идёт не так, ваши логи показывают ключ партнёра, но не говорят, был ли это тест разработчика, запланенная задача или скомпрометированная машина.

Когда API‑ключи всё ещё подходят

API‑ключи подходят для сервер‑к‑серверу интеграций с небольшим набором стабильных действий, особенно если ключ можно ограничить по IP, по эндпоинтам или по окружениям (тест/прод). В инструментах вроде AppMaster ключи часто — хороший первый шаг для быстрых пробных интеграций. Просто решите заранее, как вы будете их ротировать и отзываться до выхода в прод.

Как работает OAuth 2.0 (без учебника)

OAuth 2.0 существует ради одной главной цели: делегированного доступа. Он позволяет приложению партнёра вызывать API от имени конкретного пользователя, без передачи пароля и без предоставления партнёру постоянного неограниченного доступа.

Думайте об этом как об обмене разрешениями между тремя сторонами:

  • Пользователь (владелец ресурса): человек, чьи данные запрашиваются.
  • Приложение партнёра (клиент): интеграция, которую строит партнёр.
  • Ваша система аутентификации (authorization server): система, которая проверяет пользователя, запрашивает согласие и выдаёт токены.

После одобрения пользователь даёт приложению партнёра access token. Это краткоживущий идентификатор, который приложение посылает в ваш API, чтобы доказать текущее разрешение. Access token должен быстро истекать, чтобы при утечке ущерб был ограничен.

Чтобы не заставлять пользователей подтверждать доступ постоянно, многие решения используют refresh token. Refresh token живёт дольше и служит только для получения нового access token, когда старый истёк. Простая модель: access token — для вызовов API, refresh token — для получения новых access token.

Scopes делают OAuth практичным. Scope — это именованная граница разрешений, например «read:invoices» или «write:customers». Во время согласия пользователь видит, что запрашивает приложение партнёра, и ваша система фиксирует, что было разрешено. Ваш API проверяет scopes при каждом запросе и отклоняет вызовы, выходящие за рамки разрешённого.

Пример: CRM‑партнёр хочет синхронизировать контакты. Вы можете потребовать, чтобы партнёр запрашивал только «read:contacts» и «write:contacts». Если позже он попытается удалять данные, API заблокирует это, пока не будет явно разрешён «delete:contacts». Это одна из ключевых практических разниц: OAuth облегчает применение принципа наименьших прав.

Онбординг: опыт первого дня для внешних разработчиков

С API‑ключами онбординг может быть почти мгновенным. Партнёр просит ключ, вы даёте его (в партнёрском портале или по почте), и они добавляют его в заголовок запроса. Время до первого вызова часто измеряется минутами — это приятно, когда команда партнёра хочет быстро показать интеграцию.

Эта скорость имеет компромисс: «кто вызывает» остаётся неясным уже на первый день. Если один ключ используется всей командой партнёра, вы быстро получаете рабочее демо, но сложнее задать границы (тест/прод, минимальные права, ясные владельцы в случае проблем).

Онбординг по OAuth кажется тяжелее, потому что перед первым успешным вызовом больше движущихся частей. Партнёрам обычно нужно зарегистрировать приложение, настроить redirect URI и использовать тестовых пользователей или sandbox‑аккаунт. Первый вызов может занять часы или дни не потому, что OAuth таинственен, а потому что мелкие детали настройки создают большие задержки.

Частые блокеры первого дня: несоответствие redirect URI, путаница между authorization code и access token, смешение окружений (тестовые креды с продом), отсутствие нужных scopes и отсутствие простого способа создать или сбросить тестовых пользователей.

Документация важнее для OAuth. Для API‑ключей часто достаточно короткого руководства «скопировать ключ, добавить заголовок, вызвать эндпоинт». Для OAuth партнёрам нужен чек‑лист и рабочий пример, который можно запустить.

Если вы делаете партнёрские инструменты в AppMaster, небольшой стартовый пример (веб‑UI плюс бэкенд‑прокси) поможет партнёрам пройти OAuth‑поток end‑to‑end без большого объёма кода, сохраняя при этом понятную модель безопасности с первого дня.

Ротация и отзыв токенов в реальном мире

Быстрее создавайте API, готовые к партнёрам
Постройте бэкенд для партнерских API с ясными правилами аутентификации, логами и лимитами с самого начала.
Попробовать AppMaster

Ротация кажется простой, пока вы не вспомните, что у партнёров есть cron‑задачи, несколько окружений и кто‑то, кто шесть месяцев назад вставил секрет в таблицу. Практический вопрос не «можем ли мы ротировать?», а «можем ли мы ротировать, не сломав прод?»

С API‑ключами ротация — это в основном координация. Безопасный шаблон — пара ключей с окном перекрытия: вы выпускаете новый ключ, краткий период принимаете оба, затем отключаете старый после подтверждения переключения. Обратная сторона — экстренный отзыв: при утечке ключа вы хотите одним кликом его убить, не дожидаясь релиза на их стороне.

В рабочей практике обычно есть две активные пары ключей на партнёра (текущий и следующий), отдельные ключи для окружений (dev, staging, prod), понятная маркировка и протестированный путь инцидента для немедленного отзыва.

В OAuth ротация более автоматическая, если вы используете короткоживущие access‑токены. Access‑токены быстро истекают, а обновление поручаете refresh‑токенам — это снижает риск длительного простоя при необходимости прекратить доступ. Отзыв сосредоточен на refresh‑токенах: после отзыва партнёр не сможет получить новые access‑токены.

Сложная часть — политика: как долго живут refresh‑токены, можно ли их переиспользовать и что триггерит повторную аутентификацию (сброс пароля, удаление админом, подозрительная активность). Если нужна быстрая реакция на инциденты, делайте access‑токены короткими и обеспечьте надёжный и мгновенный отзыв refresh‑токенов.

Обычный инцидент: сервер партнёра логирует учётные данные. С API‑ключами вы отзываете ключ — интеграция останавливается сразу, затем спешите переиздать и координировать обновления. С OAuth вы отзываете refresh‑токены для партнёра или пользователя, и существующие access‑токены вскоре истекут, обычно с меньшим резким простоем.

Доступ на уровне пользователя: только партнёр, только пользователь или оба?

Сделайте логи аудита полезными
Сохраняйте partner ID, контекст пользователя, scope и request ID, чтобы ускорить расследования.
Попробовать

Если вам нужно лишь знать, какая компания вызывает API, идентификации на уровне партнёра может быть достаточно. Но как только партнёр действует от имени множества конечных пользователей (агенты, менеджеры, клиенты), вам нужен ясный пользовательский контекст.

С API‑ключами распространённый паттерн — один секрет на партнёра. Контекст пользователя добавляют одним из трёх способов: отсутствует вовсе (всё выглядит как партнёр), пользовательский ID передаётся в заголовке или поле, или используется поток имперсонации, где партнёр подписывает пользовательский ID, выданный вами. Такие подходы работают, но любой пользовательский идентификатор от партнёра следует считать ненадёжным, если вы не можете его проверить.

OAuth создан для доступа на уровне пользователя. Каждый пользователь даёт грант, и scopes ограничивают, что партнёр может делать. Это упрощает минимизацию прав: интеграция может читать контакты, но не экспортировать счета, или обновлять тикеты, но не менять админ‑настройки.

Моделирование прав, когда партнёры действуют от имени многих пользователей

Простой способ сохранить порядок — разделить идентичности и права: идентичность партнёра (кто интегрирует), идентичность пользователя (для кого действие), роль (что пользователь может делать в вашем продукте) и scope (что партнёр может делать для этого пользователя).

Пример: хелпдеск‑партнёр синхронизирует тикеты для 200 агентов. Если у вас только один API‑ключ, каждое действие может выглядеть как «Партнёр A» в логах. С OAuth каждый агент может иметь свой грант, и тогда «Агент Мария обновила тикет 1832 через Партнёр A» становится возможным.

Когда нужны оба уровня, используйте клиентскую идентичность партнёра плюс делегирование пользователя (OAuth‑токены, привязанные к пользователю). В инструментах вроде AppMaster это легко ложится на модуль аутентификации для пользователей, записи партнёров и проверки прав в бизнес‑логике.

Аудит и отладка: кто что сделал?

Когда в партнёрской интеграции что‑то идёт не так, сложнее всего обычно не починить баг, а доказать, что произошло.

С API‑ключами многие сталкиваются с проблемой общей идентичности. Один ключ часто означает «партнёр», а не конкретного человека или экземпляр приложения. Вы можете залогировать, что пришёл запрос с Ключом A, но редко сможете доказать, какой конечный пользователь это вызвал, был ли это сотрудник, скрипт или утёкший ключ. Если партнёр копирует ключ в несколько систем, ваши логи все выглядят одинаково.

OAuth даёт более чёткий след: кто дал разрешение какому клиентскому приложению, когда это было сделано и какие scopes были утверждены. Если приложение партнёра скомпрометировано, вы часто можете сузить воздействие до одного client_id или даже до подмножества пользователей, которые дали доступ.

Вопросы аудита, которые будут на ревью безопасности или в рамках комплаенса: чьи данные были доступны приложением партнёра и в рамках какого scope; когда доступ был выдан и когда использовался в последний раз; откуда шли вызовы (IP, окружение); было ли превышение разрешённого scope; и можно ли отозвать доступ одного пользователя без остановки всей интеграции.

Чтобы ускорить разбор инцидентов, фиксируйте несколько полей для каждого запроса (независимо от типа аутентификации): client_id (или id ключа), subject (user id, если есть), scope, IP‑адрес и уникальный request ID, который возвращаете в ответе. Добавьте временные метки и исход (успех, отклонено, rate limited), чтобы восстанавливать хронологию инцидента за минуты, а не дни.

Частые ошибки, которые приводят к проблемам с безопасностью и поддержкой

Держите секреты вне фронтенда
Поднимите прокси-интеграцию, чтобы хранить API-ключи на сервере, а не в клиентских приложениях.
Прототипировать

Большинство инцидентов в партнёрской аутентификации — это не «продвинутые взломы». Это небольшие решения, которые делают секреты лёгкими для утечки или сложными для замены.

Проблемы с API‑ключами часто начинаются с места, куда ключ попадает. Партнёр помещает его в мобильное или браузерное приложение, затем он попадает в логи, скриншоты или чат. Ещё одна частая проблема — считать ключ постоянным. Без политики ротации команды избегают менять его, даже после ухода сотрудников или компрометации репозитория.

Неудачи с OAuth выглядят иначе. Топ‑запрос в поддержку — несоответствие redirect URI: в staging работает, в проде ломается и разработчик не понимает почему. Другая частая проблема — слишком широкие scopes «чтобы заработало», что позже превращается в проблему на ревью безопасности. Путаница в экранах согласия тоже вызывает отток, когда пользователи видят права, не соответствующие функционалу интеграции.

Подводные камни есть в обоих подходах. Долгоживущие секреты и токены увеличивают радиус поражения. Отсутствие rate limits позволяет багу превратиться в outage. Отсутствие защиты от повторов (например, при принятии одного и того же подписанного запроса дважды) может привести к двойному списанию или созданию дубликатов.

Проблемы поддержки часто самодельные. Если ошибки неинформативны («unauthorized»), партнёры не могут починить проблему без эскалации. Если нет песочницы и единых окружений, партнёры случайно тестируют на проде.

Если хотите ввести ограждения до онбординга, держите их простыми:

  • Храните секреты только на серверах, ни в коем случае не в клиентских приложениях или общих каналах.
  • Включите ротацию и отзыв в соглашение, с дедлайнами и контактами ответственных.
  • Делайте понятные scopes с описаниями на простом языке.
  • Введите rate limits и проверки идемпотентности или защиты от повторов для операций записи.
  • Предоставьте песочницу с реалистичными данными и предсказуемыми настройками.

Если вы строите бэкенд интеграции в AppMaster, заложите эти правила в модуль аутентификации и ответы об ошибках заранее, до того как партнёры начнут полагаться на хрупкое поведение.

Практическое руководство для команд, работающих с партнёрами

Начинайте с нужного результата, а не с технологии. Реальный выбор — авторизовать ли одну интеграцию (идентичность сервиса) или настоящих конечных пользователей с разными правами.

Если партнёры действуют от имени отдельных пользователей, OAuth 2.0 обычно безопаснее по умолчанию. Он позволяет привязать вызовы к конкретному человеку, ограничивать его права и отключать доступ без разрушения всей интеграции партнёра.

Если интеграция действительно сервер‑к‑серверу и доступ фиксирован, API‑ключи могут быть достаточны. Это подходит, например, когда «Партнёр X отправляет ночные обновления остатков», где нет контекста человека и действия всегда одинаковы.

Быстрая проверка рисков и операций помогает:

  • Нужны ли права на уровне пользователя (например, «Алиса видит только своих клиентов»)? Тогда выбирайте OAuth.
  • Если это фиксированный рабочий процесс с постоянным доступом — ключи подходят при условии безопасной ротации.
  • Если данные чувствительны (PII, платежи, здоровье, финансы) — склоняйтесь к OAuth, чтобы можно было ограничить scope и аудиторно проверять по пользователям.
  • Если зрелость партнёров низкая (ключи будут шариться), OAuth уменьшит радиус поражения.
  • Если ожидается высокий объём и рост — выбирайте подход, который упрощает отзыв и отладку.

Если придётся поддерживать оба метода, задайте чёткие границы. Например: API‑ключи для бек‑офисных батч‑задач, OAuth для любых функций, касающихся аккаунта пользователя. Документируйте, какие эндпоинты принимают какой метод и что происходит при отзыве доступа.

Конкретный пример: CRM‑партнёр хочет импортировать лиды. Если он запускает ночную задачу от имени одной компании, API‑ключ может быть нормой. Если продавцы подключают свои аккаунты и должны видеть только свои воронки, OAuth — правильный выбор.

Бырые проверки перед выпуском партнёров в прод

Получите production-ready исходники
Генерируйте реальный исходный код бэкенда и сохраняйте полный контроль над хостингом и ревью.
Экспортировать код

Прежде чем открывать продовый доступ, рассматривайте аутентификацию как операционную систему, а не галочку в списке. Самые горячие проблемы начинается с неясных учётных данных, расплывчатых прав и отсутствия логов.

Безопасность и доступ

Выберите один путь выдачи. Независимо от того, используете ли вы API‑ключи или OAuth, go‑live проверки схожи: кто может получить учётные данные, что они могут делать и как быстро вы можете их выключить.

Запишите основы для команды партнёров: кто одобряет доступ и как вы проверяете личность партнёра; как работает срок действия и ротация и что сломается при пропуске ротации; протестированная «кнопка убийства», которая отключает одного партнёра (или одного пользователя) без вывода всех сервисов из строя; определённые права с дефолтами наименьших привилегий и понятным текстом согласия; и песочница с тестовыми учётными данными, реалистичными данными и предсказуемыми лимитами.

Реальность‑чек: если API‑ключ партнёра утечёт в публичный репозиторий, можете ли вы отозвать его за минуты, оценить радиус поражения и выпустить новый без ручных правок базы данных?

Операции и поддержка

Убедитесь, что вы можете доказать «что произошло?» с доказательствами. Каждый запрос должен логировать, кто его сделал (partner id, user id если есть), что пытались сделать (эндпоинт, scope) и какое решение приняла система (status code, причина ошибки).

Также подтвердите, что у вас понятные сообщения об ошибках, говорящие партнёру, что исправить (нет scope, токен просрочен, неверная подпись), rate limits защищают систему без сюрпризов для партнёров, и есть план действий для приостановки доступа и уведомления затронутых партнёров.

Если вы делаете партнёрские API в AppMaster, задайте эти поля и проверки с самого начала, чтобы сгенерированный бэкенд и логи оставались консистентными по мере изменения требований.

Реалистичный пример: интеграция CRM‑партнёра

Применяйте принцип минимальных прав в логике
Добавляйте проверки прав и валидацию scopes там, где реально выполняются бизнес-правила.
Построить бэкенд

Представьте CRM‑партнёра, который синхронизирует контакты в ваш продукт для десятков общих клиентов. У каждого клиента есть несколько команд, и не каждой команде нужно видеть одно и то же. Вендор CRM хочет одну переиспользуемую интеграцию, а вы хотите меньше тикетов в поддержку и чистые записи о том, кто что изменил.

С API‑ключами онбординг простой: вы даёте партнёру ключ, он начинает отправлять контакты. Проблемы проявляются через неделю, когда клиент спрашивает: «Продажи могут синхронизировать, а саппорт — нет?» Один ключ стал мастер‑ключом.

В таком сценарии ограничения с API‑ключами предсказуемы: доступ часто «всё или ничего» на ключ (поэтому вы делаете дополнительные ключи на клиента, команду или окружение), утечки заставляют ротировать ключи повсеместно, атрибуция слабая, потому что ключ представляет приложение партнёра, а отключить одного пользователя обычно значит отключить весь ключ.

С OAuth CRM‑партнёр отправляет каждого администратора клиента через шаг согласия. Вы можете запрашивать только scopes, нужные для синка контактов (читать контакты, писать контакты, без доступа к биллингу и настройкам админа). Этот меньший набор прав предотвращает многие вопросы «почему они видят это?».

Операционно день‑о‑день обычно чище с OAuth: можно отозвать доступ для одного клиента (или даже одного пользователя) без нарушения других, короткоживущие access‑токены уменьшают радиус поражения, а логи аудита связывают действие с клиентом, OAuth‑клиентом и часто с конкретным пользователем.

Если вы строите это в платформе вроде AppMaster, моделируйте данные так, чтобы каждое обновление контакта записывало приложение партнёра, аккаунт клиента и действующего пользователя (когда используется OAuth). Тогда расследовать «дубли контактов за ночь» станет проще.

Следующие шаги: выпустите более безопасную партнёрскую интеграцию

Опишите интеграцию двумя короткими историями: happy path (получить учётные данные, вызвать эндпоинт, увидеть данные) и failure path (токен истёк, нет scope, неправильный аккаунт). Эта одна страница сэкономит дни поддержки, потому что партнёры смогут сами диагностировать проблемы.

Начните с пилота с одним партнёром. Реальный трафик быстро покажет, что вы упустили: какие эндпоинты требуют более чётких scopes, какие ошибки нуждаются в понятных сообщениях и что нужно логировать, чтобы быстро отвечать на вопросы.

Если вы строите собственную платформу интеграций, делайте первую версию простой. Инструменты вроде AppMaster помогут вам создать потоки аутентификации, API и бэкенды, удобные для аудита, быстрее, без ручной разработки каждой детали. Если хотите изучить платформу, смотрите AppMaster (appmaster.io).

Вот практический чек‑лист, чтобы перейти от «работает» к «безопасно и поддерживаемо»:

  • Выберите метод по умолчанию и задокументируйте, когда допускаются исключения.
  • Установите политику ротации (частота, окно перекрытия и что такое экстренный отзыв).
  • Определите правила доступа (на уровне партнёра, пользователя или оба).
  • Решите, что вы будете логировать (partner ID, user ID если есть, эндпоинт, действие, временная метка).
  • Подготовьте песочницу с тестовыми учётными данными и предсказуемыми примерами данных.

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

Вопросы и ответы

When should I choose an API key instead of OAuth 2.0 for a partner integration?

Используйте API-ключ, когда интеграция действительно является сервер‑к‑серверу и вам нужно только идентифицировать систему партнёра, а не отдельных конечных пользователей. Используйте OAuth 2.0, когда приложение партнёра должно действовать от имени разных пользователей или тенантов и вам нужны согласие пользователя, scopes и возможность отзыва доступа для отдельного пользователя.

What’s the practical difference between “partner-level” access and “user-delegated” access?

API-ключ обычно представляет собой одну общую идентичность партнёра, поэтому права и логи получаются грубыми. OAuth 2.0 выдаёт токены, привязанные к конкретному пользовательскому согласию и набору scopes, что облегчает проверку прав на уровне пользователя и аудит.

Why do API keys feel faster to onboard than OAuth?

С API-ключами онбординг часто занимает минуты: партнёр получает ключ и добавляет его в заголовок. OAuth требует регистрации приложения, настройки redirect URI и прохождения согласия — поэтому первый рабочий вызов обычно занимает дольше.

What are the most common OAuth setup mistakes partners make?

Чаще всего — несоответствие redirect URI между тем, что настроил партнёр, и тем, что ожидает ваш сервер. Другие частые ошибки: смешение тестовых и боевых учётных данных, путаница между authorization code и access token, и запрос неправильных scopes.

How should we rotate API keys without breaking a partner’s production jobs?

Держите по два ключа на партнёра с оверлэп‑окном: выпустите новый ключ, разрешите оба в течение короткого времени, затем отключите старый после подтверждения переключения. Разделяйте ключи по окружениям и обеспечьте мгновенный отзыв при утечке.

What’s a sensible token rotation and revocation approach with OAuth 2.0?

Делайте access‑токены короткоживущими и используйте refresh‑токены для получения новых access‑токенов. Для инцидентного реагирования обеспечьте надёжный и немедленный отзыв refresh‑токенов, чтобы партнёр не мог дальше получать новые access‑токены после блокировки.

Is it ever safe to put an API key in a mobile or browser app?

Предполагается, что всё, что находится в браузере или мобильном приложении, можно извлечь, поэтому API‑ключи должны храниться только на серверах. Если нужен вход с клиента и доступ на уровне пользователя, OAuth безопаснее — он исключает встраивание постоянного общего секрета в клиент.

How do scopes help, and how should we design them for partners?

Scopes — это именованные права вроде «читать контакты» или «писать тикеты», которые ваш API проверяет при каждом запросе. Делайте scopes мелкими и соответствующими реальным действиям, требуйте от партнёров запрашивать только то, что им действительно нужно — это помогает соблюдать принцип наименьших прав и уменьшает количество спорных ситуаций.

What should we log to make partner auth issues easy to troubleshoot?

Логируйте идентификатор партнёра (key id или client id), субъект (user id, если есть), выданные scopes, эндпоинт/действие, результат (успех или отказ) с ясной причиной, IP‑адрес и уникальный request ID, который возвращаете в ответе. Это позволяет быстро восстановить картину инцидента.

What are the key go-live checks before we open partner access to production?

Определите метод аутентификации по умолчанию и случаи исключений, убедитесь, что вы можете быстро выдавать и отзывать учётные данные, проверьте rate limits и идемпотентность для write‑эндпоинтов. Также подготовьте песочницу, понятные сообщения об ошибках и отработанный план действий при приостановке доступа одного партнёра без вывода всех интеграций из строя.

Легко начать
Создай что-то невероятное

Экспериментируйте с AppMaster с бесплатной подпиской.
Как только вы будете готовы, вы сможете выбрать подходящий платный план.

Попробовать AppMaster