- Код авторизации + секрет клиента: для веб-приложений с серверной частью
- Код авторизации + PKCE: для нативных приложений, инструментов CLI, SPA и других публичных клиентов, которые не могут безопасно хранить секрет клиента
- Предоставление авторизации устройства: для клиентов, которые вообще не могут получить перенаправление браузера, например CLI, запущенного через SSH, в контейнере или в облачной IDE
Создание OAuth-приложения
- Перейдите в раздел Настройки > OAuth-приложения в своей учетной записи Teable.
- Нажмите Новое OAuth-приложение, чтобы создать новое приложение.
-
Заполните необходимую информацию:
- Название OAuth-приложения: понятное название вашего приложения
- URL главной страницы: полный URL веб-сайта вашего приложения
- URL обратного вызова: URL, на который пользователи будут перенаправлены после авторизации
- Области действия: разрешения, необходимые вашему приложению
- Включить поток устройства: по умолчанию выключено. Включайте только если ваше приложение выполняет вход пользователей с помощью кода устройства
- После создания приложения сгенерируйте секрет клиента. Обязательно скопируйте и надежно сохраните его — повторно увидеть его будет нельзя.
Вы получите идентификатор клиента и должны будете сгенерировать секрет клиента. Надежно храните эти учетные данные и никогда не раскрывайте их в клиентском коде. При использовании потока PKCE секрет клиента не требуется.
Доступные области действия
Области действия определяют, какие действия может выполнять ваше OAuth-приложение. Доступные области действия сгруппированы по типу ресурса:Поток OAuth 2.0 с кодом авторизации
Teable реализует стандартный поток OAuth 2.0 с кодом авторизации:Шаг 1: перенаправление пользователей на авторизацию
Направьте пользователей на конечную точку авторизации с параметрами вашего приложения:
Пример:
Шаг 2: авторизация пользователя
Пользователи увидят страницу авторизации со следующими элементами:- Название и логотип вашего приложения
- Запрошенные разрешения (области действия)
- Варианты разрешить или отклонить доступ
Шаг 3: обработка обратного вызова
После того как пользователь разрешит (или отклонит) запрос, Teable перенаправит его на ваш URL обратного вызова: При успехе:Шаг 4: обмен кода на токены
Обменяйте код авторизации на токены доступа и обновления:
Пример запроса:
Поток авторизации PKCE
PKCE (Proof Key for Code Exchange) предназначен для приложений, которые не могут безопасно хранить секрет клиента, таких как нативные приложения для компьютера, мобильные приложения, инструменты CLI или одностраничные приложения.Шаг 1: генерация параметров PKCE
Перед началом авторизации клиенту необходимо сгенерировать пару параметров PKCE:Шаг 2: перенаправление пользователей на авторизацию
Пример:
Шаг 3: обработка обратного вызова
Как и в стандартном потоке с кодом авторизации: после одобрения пользователем код авторизации возвращается через перенаправление.Шаг 4: обмен кода + code_verifier на токены
В режиме PKCE не требуется
client_secret. Вместо него для проверки идентичности клиента используется code_verifier.Поток авторизации устройства
Предоставление авторизации устройства (RFC 8628) предназначено для клиентов, которые не могут получить перенаправление браузера: CLI, запущенного через SSH, внутри контейнера или в облачной IDE. Ваш клиент показывает URL и короткий код, пользователь подтверждает действие в любом браузере, и в терминал ничего вводить не нужно. Teable следует RFC 8628, поэтому большинство библиотек OAuth-клиентов могут реализовать этот поток без специального кода. Ниже описано то, что специфично для Teable.Запрос кода устройства
POST /api/oauth/device/code с вашим client_id и необязательным scope. Конечная точка доступна без аутентификации и ограничена 30 запросами за 15 минут на IP-адрес.
BACKEND_OAUTH_DEVICE_CODE_EXPIRE_IN), а interval — это минимальное число секунд ожидания между опросами.
Выведите verification_uri и user_code. На этой странице пользователь входит в систему, вводит код и перед одобрением или отклонением проверяет название, главную страницу и запрошенные области действия вашего приложения. Страница предупреждает не подтверждать код, который пользователь не запускал сам. Каждый код можно использовать один раз.
Teable не возвращает
verification_uri_complete, и ваш клиент не должен формировать его. Одобренный код выполняет вход подтвердившего пользователя в его собственную учетную запись Teable, поэтому ссылка, уже содержащая код, — именно то, на чем основан фишинг с кодом устройства.Опрос для получения токенов
POST /api/oauth/access_token с grant_type=urn:ietf:params:oauth:grant-type:device_code, device_code и вашим client_id. Публичные клиенты не передают client_secret; конфиденциальные клиенты добавляют его, как и в других потоках.
Пока кто-то не подтвердит код, конечная точка возвращает ошибку вместо токенов:
После одобрения пользователем ответ содержит ту же полезную нагрузку токена, что и в других потоках.
Использование токенов доступа
Включайте токен доступа в заголовокAuthorization для API-запросов:
baseId из ответа.
Обновление токенов доступа
Когда срок действия токена доступа истекает, используйте токен обновления для получения нового:
Пример запроса:
Отзыв доступа
Для владельцев OAuth-приложений
Отзовите доступ приложения у всех пользователей (это может сделать только создатель приложения):Для пользователей
Отзовите собственную авторизацию для конкретного приложения:Для приложений
Приложения могут отозвать собственный доступ с помощью токена доступа:Эта конечная точка принимает только аутентификацию токеном доступа, но не сеансовую аутентификацию.
Срок действия токенов
Обработка ошибок
Распространенные ответы с ошибками:Рекомендации
- Выберите подходящий режим: используйте режим секрета клиента для веб-приложений с серверной частью, режим PKCE для нативных приложений/CLI/SPA и поток устройства, если клиент не может получить перенаправление браузера
- Надежно храните секреты: никогда не раскрывайте секрет клиента в клиентском коде
- Используйте параметр state: всегда включайте случайный параметр
stateдля предотвращения CSRF-атак - Запрашивайте минимальные области действия: запрашивайте только те разрешения, которые действительно нужны вашему приложению
- Обрабатывайте обновление токенов: реализуйте автоматическое обновление токенов до истечения их срока действия
- Безопасное хранение токенов: надежно храните токены доступа и обновления на своем сервере

