Пример авторизации OAuth
Это руководство показывает, как встроить поддержку OAuth в ваш плагин-инструмент. OAuth — это более удобный способ авторизации плагинов-инструментов, которым нужен доступ к данным пользователя в сторонних сервисах, таких как Gmail или GitHub. Вместо того чтобы заставлять пользователя вручную вводить API-ключи, OAuth позволяет инструменту действовать от имени пользователя с его явного согласия.

Предыстория

OAuth в Интеллос состоит из двух отдельных потоков, которые разработчику важно понимать и учитывать при проектировании.

Поток 1: Настройка OAuth-клиента (поток администратора / разработчика)

Сначала администраторам или разработчикам экземпляра Интеллос нужно зарегистрировать OAuth-приложение в стороннем сервисе как доверенное. После этого они смогут получить необходимые учётные данные для настройки поставщика инструмента Интеллос в качестве OAuth-клиента. Для примера ниже приведены шаги по настройке OAuth-клиента для поставщика инструмента Gmail в Интеллос:
  1. Перейдите в Google Cloud Console и создайте новый проект или выберите существующий
  2. Включите необходимые API (например, Gmail API)
  1. Перейдите в APIs & Services > OAuth consent screen
  2. Выберите тип пользователя External для публичных плагинов
  3. Заполните название приложения, адрес электронной почты поддержки пользователей и контакт разработчика
  4. При необходимости добавьте авторизованные домены
  5. Для тестирования: добавьте тестовых пользователей в разделе Test users
  1. Перейдите в APIs & Services > Credentials
  2. Нажмите Create Credentials > OAuth 2.0 Client IDs
  3. Выберите тип Web application
  4. Будут сгенерированы client_id и client_secret. Сохраните их как учётные данные.
Введите client_id и client_secret во всплывающем окне настройки OAuth-клиента, чтобы настроить поставщика инструмента в качестве клиента.
Диалог настройки OAuth-клиента
Зарегистрируйте redirect URI, сгенерированный Интеллос, на странице OAuth-клиента Google:
Redirect URI для Google OAuth
Интеллос отображает redirect_uri во всплывающем окне настройки OAuth-клиента. Обычно он имеет следующий формат:
Для самостоятельно размещённого Интеллос значение your-dify-domain должно совпадать с CONSOLE_WEB_URL.
У каждого сервиса свои требования, поэтому всегда сверяйтесь с конкретной документацией по OAuth для тех сервисов, которые вы интегрируете.

Поток 2: Авторизация пользователя (поток пользователя Интеллос)

После настройки OAuth-клиентов отдельные пользователи Интеллос могут авторизовать ваш плагин для доступа к своим личным учётным записям.
Авторизация пользователя OAuth

Реализация

1. Определите OAuth-схему в манифесте поставщика

Раздел oauth_schema в определениях манифеста поставщика сообщает Интеллос, какие учётные данные нужны для OAuth вашего плагина и что произведёт OAuth-поток. Для настройки OAuth требуются две схемы:

client_schema

Определяет ввод для настройки OAuth-клиента:
gmail.yaml
Поле url ведёт напрямую к справочной документации стороннего сервиса. Это помогает запутавшимся администраторам и разработчикам.

credentials_schema

Указывает, что производит поток авторизации пользователя (Интеллос управляет этим автоматически):
Включите и oauth_schema, и credentials_for_provider, чтобы предложить варианты аутентификации OAuth + API-ключ.

2. Реализуйте обязательные методы OAuth в поставщике инструмента

Добавьте эти импорты туда, где реализован ваш ToolProvider:
Ваш класс ToolProvider должен реализовать эти три метода OAuth (на примере GmailProvider):
Ни при каких обстоятельствах client_secret не должен возвращаться в учётных данных ToolOAuthCredentials, так как это может привести к проблемам с безопасностью.

3. Доступ к токенам в ваших инструментах

Вы можете использовать учётные данные OAuth для выполнения аутентифицированных вызовов API в реализации вашего Tool следующим образом:
self.runtime.credentials автоматически предоставляет токены текущего пользователя. Интеллос обрабатывает обновление автоматически. Для плагинов, поддерживающих аутентификацию и через OAuth, и через API_KEY, вы можете использовать self.runtime.credential_type, чтобы различать эти два типа аутентификации.

4. Укажите правильные версии

Для OAuth требуются актуальные версии SDK и Интеллос. Зафиксируйте версию SDK плагина в requirements.txt:
В manifest.yaml добавьте минимальную версию Интеллос:

Edit this page | Report an issue