Loading
Идентификация пользователей и управление доступом
Поток регистрационных данных клиента OAuth 2.0 для интеграции между серверами

Поток регистрационных данных клиента OAuth 2.0 для интеграции между серверами

Иногда требуется прямой общий доступ к информации между двумя приложениями без вмешательства пользователя. Для этих сценариев можно использовать поток регистрационных данных клиента OAuth 2.0. В этом потоке клиентское приложение обменивает свои регистрационные данные клиента, определенные во внешнем клиентском приложении - его ключ пользователя и секрет пользователя - на маркер доступа. Этот поток устраняет необходимость четкого взаимодействия с пользователем, но требует указания пользователя интеграции для выполнения интеграции. Вы можете использовать этот поток в качестве более безопасной альтернативы потоку имени пользователя и пароля OAuth 2.0.

Требуемые версии

Доступно в версиях: Salesforce Classic и Lightning Experience
Доступно в версиях: Все выпуски

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

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

Примечание
Примечание Этот поток не поддерживает маркеры обновления.
  1. Приложение внешнего клиента отправляет свои регистрационные данные клиента в конечную точку маркера OAuth Salesforce посредством запроса POST.
  2. Salesforce проверяет регистрационные данные клиента и подлинность приложения.
  3. Salesforce возвращает маркер доступа от имени назначенного пользователя интеграции.
  4. Приложение внешнего клиента использует маркер доступа для вызова Salesforce API, например, REST API.
  5. API отвечает запрошенными данными для отчета.
Предупреждение!
Предупреждение! Прежде чем настраивать поток регистрационных данных клиента, важно понять его риски безопасности. После включения данного потока любое лицо или приложение, имеющее доступ к ключу пользователя и секрету пользователя вашего связанного приложения, может получить маркер доступа. Поддерживайте безопасность, периодически изменяя секрет пользователя, и немедленно меняйте его, если он будет взломан.

Запрос маркера доступа

Рассмотрим процесс получения маркера доступа посредством потока регистрационных данных клиента.

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

Важно!
Важно! При разработке интеграций OAuth всегда передавайте конфиденциальные сведения в текст запроса POST или в заголовок запроса. Не используйте параметры GET в строке URL-запроса для передачи конфиденциальной информации. Конфиденциальная информация содержит имена пользователей, пароли, маркеры OAuth, секреты клиентов и любую персональную информацию, но не ограничивается ими. Дополнительные сведения о рекомендациях по безопасности см. в разделе «Хранение конфиденциальных данных» в Руководстве по безопасному кодированию.

Ниже указан пример запроса POST с регистрационными данными клиента в тексте запроса.

POST /services/oauth2/token HTTP/1.1
Host: MyDomainName.my.salesforce.com
grant_type=client_credentials&
client_id=*******************&
client_secret=*******************

В этом процессе запросы на https://login.salesforce.com и https://test.salesforce.com не поддерживаются. Используйте URL-адрес «Моего домена». Чтобы найти URL-адрес «Моего домена», введите строку «Мой домен» в поле «Быстрый поиск» в меню «Настройка» и выберите пункт «Мой домен».

Данные параметры должны быть добавлены в запрос.

Параметр Описание
client_id Ключ пользователя приложения внешнего клиента. Чтобы получить доступ к ключу пользователя, найдите приложение внешнего клиента в менеджере приложений внешних клиентов и выберите «Редактировать параметры» в раскрывающемся списке. Потом разверните раздел «Параметры OAuth» и нажмите «Ключ и секрет пользователя». Иногда требуется проверить подлинность пользователя перед просмотром ключа пользователя.
client_secret Секрет пользователя приложения внешнего клиента. Чтобы открыть секрет пользователя, найдите приложение внешнего клиента в менеджере приложений внешнего клиента и выберите «Редактировать параметры» в раскрывающемся списке. Потом разверните раздел «Параметры OAuth» и нажмите «Ключ и секрет пользователя». Иногда требуется проверить подлинность пользователя перед просмотром секрета клиента.
grant_type

Тип предоставления OAuth 2.0, запрашиваемый приложением внешнего клиента. Для потока регистрационных данных клиента это значение должно быть установлено на client_credentials.

Подробное объяснение типа предоставления регистрационных данных клиента см. в разделе 4.4 Предоставление регистрационных данных клиента в основе авторизации OAuth 2.0 от Инженерно-технической целевой группы по Интернету.

Ниже указан пример с регистрационными данными клиента в заголовке базовой авторизации. В этом формате client_id добавляется к client_secret в client_id:client_secret формата, и итоговое значение кодируется Base64.

POST /services/oauth2/token HTTP/1.1
Host: MyDomainName.my.salesforce.com
Header: Authorization: Basic 
TXlDbGllbnRJRDpNeUNsaWVudFNlY3JldA==
grant_type=client_credentials

Если вы используете этот формат, grant_type является единственным обязательным параметром в тексте запроса. grant_type должен быть установлен на client_credentials.

Примечание
Примечание Поскольку Salesforce не поддерживает области в конечной точке маркера, добавить области в запрос невозможно. Вместо этого назначьте области приложению внешнего клиента.

Salesforce предоставляет маркер доступа

После проверки регистрационных данных клиента Salesforce возвращает ответ, содержащий маркер доступа и запрошенные области. Приложение может использовать маркер доступа для доступа к защищенным данным в Salesforce.

Ниже указан пример ответа на маркер доступа в формате JSON.

{
    "access_token": "*******************",
    "instance_url": "https://yourInstance.salesforce.com",
    "id": "https://login.salesforce.com/id/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXX",
    "token_type": "Bearer",
    "scope": "id api",
    "issued_at": "1657741493799",
    "signature": "c2lnbmF0dXJl"
}

Данные параметры добавлены в ответ.

Параметр Описание
access_token Маркер OAuth, используемый внешним клиентским приложением для запроса доступа к защищенному ресурсу от имени клиентского приложения. Маркер доступа может сопровождаться дополнительными полномочиями в виде областей.
instance_url URL-адрес экземпляра организации пользователя. Например: https://yourInstance.salesforce.com/.
id URL-адрес удостоверения, который можно использовать для идентификации организации и пользователя интеграции. Формат URL-адреса: https://login.salesforce.com/id/orgID/userID.
token_type Тип Bearer маркера, используемый для всех ответов, содержащих маркер доступа.
scope

Области, связанные с маркером доступа.

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

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

  • Полный доступ (full)
  • Управление данными пользователей посредством веб-обозревателей (web)
  • Выполнение запросов в любое время (refresh_token, offline_access)

Для дополнительных сведений см. «Области и маркеры OAuth».

issued_at Отметка времени создания подписи в миллисекундах.
signature Подпись HMAC-SHA256, зашифрованная в Base64, подписанная client_secret. Подпись может содержать конкатенированный код и значение issued_at, которые можно использовать для проверки того, что URL-адрес удостоверения не изменился после отправки сервером.
 
Загрузка
Salesforce Help | Article