Перейти к содержимому
Kitegra
← Вернуться в блог

Модуль в этой статье: Инструменты

Тестирование HTTPS iFlow в SAP CPI с сервисным ключом и трассировка вызова

Вызовите HTTPS-эндпоинт SAP CPI с OAuth client credentials из сервисного ключа Process Integration Runtime, найдите сообщение, созданное вызовом, и трассируйте его шаг за шагом.

Тестирование HTTPS iFlow в SAP CPI с сервисным ключом и трассировка вызова

iFlow с отправителем HTTPS легко развернуть и на удивление неудобно вызвать: нужен правильный эндпоинт, токен от правильного сервисного ключа, иногда CSRF-токен, а потом ещё надо найти в мониторе сообщение, которое создал ваш вызов.

В этой статье весь цикл для SAP Cloud Integration (SAP CPI) пройден целиком: что нужно, как получить токен и вызвать эндпоинт, как найти получившееся сообщение и как его трассировать.

Что понадобится

  • Развёрнутый iFlow с каналом отправителя HTTPS. Его Address, например /orders/create, становится частью эндпоинта.
  • URL эндпоинта: хост среды выполнения, затем /http и адрес. Для развёрнутого iFlow его показывает Manage Integration Content в мониторе.
  • Экземпляр сервиса Process Integration Runtime с сервисным планом integration-flow и ролью, которой разрешено отправлять сообщения, а также сервисный ключ этого экземпляра с client ID и secret.
  • Тестовый payload, который принимает iFlow.

Получите токен и вызовите эндпоинт

В сервисном ключе есть всё, что нужно для вызова: client ID и secret, URL сервиса токенов и хост среды выполнения:

{
  "oauth": {
    "clientid": "<client id>",
    "clientsecret": "<secret>",
    "url": "https://<subaccount>.it-cpi<nn>-rt.cfapps.<region>.hana.ondemand.com",
    "tokenurl": "https://<subaccount>.authentication.<region>.hana.ondemand.com/oauth/token"
  }
}

Обращайтесь с client secret как с паролем: не держите ключ в общих файлах, тикетах и чатах.

Вызовите эндпоинт и прочитайте ответ

Вызов состоит из двух запросов: сначала токен по grant client credentials, затем сам вызов с этим токеном:

# 1. Get an access token with the client credentials of the service key
curl -X POST "<tokenurl>" \
     -u "<clientid>:<clientsecret>" \
     -d "grant_type=client_credentials"

# 2. Call the iFlow's HTTPS endpoint with the token
curl -i -X POST "<url>/http/orders/create" \
     -H "Authorization: Bearer <access_token>" \
     -H "Content-Type: application/json" \
     -d @order.json

# The response headers include SAP_MessageProcessingLogID: the Message ID of this call.
  • 401: токена нет, он истёк или выдан для другого субаккаунта.
  • 403: роли сервисного ключа не разрешено отправлять сообщения, или отправитель HTTPS требует CSRF-токен. Для тестового эндпоинта можно отключить защиту CSRF в канале или сначала получить токен.
  • 404: неверный адрес, или iFlow не развёрнут.
  • 500: iFlow дал сбой; где именно, скажет журнал обработки сообщения.

При любом статусе заголовок ответа SAP_MessageProcessingLogID даёт Message ID вызова, и с ним можно открыть сообщение: см. статью о поиске сообщения по Message ID.

То же самое в браузере с HTTP Runner

В Toolbox Kitegra есть HTTP Runner для эндпоинтов ваших iFlow. Откройте его из вида «Инструменты» во всплывающем окне расширения.

  • «Новая коллекция» и «Новый запрос» создают коллекцию запросов GET, POST, PUT, PATCH, DELETE или HEAD с параметрами запроса, заголовками и телом JSON, XML, текстом или файлом.
  • {{variables}} и среды (dev, test, prod): добавьте среду кнопкой «Новая среда» или отправляйте с «Без среды». Значение переменной, отмеченной как «Секретная», остаётся в этом браузере.
  • Auth: «Из коллекции», «Нет», «Basic», «Токен Bearer» или «OAuth2 client credentials (service key)», куда вы вставляете JSON «Service key (Process Integration Runtime)»; токен получается за вас. Нужен ключ с client secret; ключ на основе сертификата не поддерживается.
  • «Тесты» проверяют ответ («Статус равен», «Тело содержит», «JSONPath равен», «XPath равен»), «Извлечение» сохраняет значения из него в переменные, а «Запустить коллекцию» отправляет всю коллекцию по порядку.
  • «Импорт» → «Коллекция Postman» загружает коллекцию Postman, как в статье о переходе от Postman или OpenAPI к получателю HTTP, а на вкладке «Набор данных» кнопка «Отправить каждое сообщение» отправляет все сообщения набора данных из генератора тестовых payload.

Ничего не отправляется, пока вы не нажмёте «Отправить», а ваши cookies SAP не отправляются никогда. Runner вызывает только хосты под *.hana.ondemand.com. После вызова кнопка «Открыть в мониторе» открывает сообщение по его SAP_MessageProcessingLogID в просмотрщике журналов; если хост дизайнера нельзя определить по endpoint, укажите в среде тенант (хост дизайнера) для «Открыть в мониторе».

Трассируйте вызов

  1. Откройте iFlow в дизайнере, откройте «Сообщения» через кнопку «Инструменты Kitegra» и переключите «Trace: выкл.» во включённое положение.
  2. Нажмите «Отправить» в Runner или вызовите endpoint через curl.
  3. Сообщение появится на панели «Сообщения» с отметкой TRACE. Выберите «На схеме».
  4. Щёлкните окрашенный шаг, чтобы увидеть тело, headers и exchange properties перед ним.

Панель трассировки подробно описана в статье о пошаговой трассировке сообщения.

Чем помогает Kitegra

В Kitegra сервисный ключ, значения авторизации и секретные переменные остаются в вашем браузере. После входа коллекции и среды Runner синхронизируются с аккаунтом Kitegra, причём из них удаляются все значения авторизации и секретные переменные. Runner — часть Toolbox, которая бесплатна; трассировка и просмотр журналов относятся к Message Monitor.

Helper, Message Monitor, iFlow Inspector и iFlow Docs по отдельности считают iFlow, на которых вы их используете: 5 на модуль без аккаунта Kitegra, 50 на тарифе Free, 100 на Starter и 300 на Pro; в Business ограничений нет. Toolbox и дополнения для рабочего пространства бесплатны. Сравните тарифы.

Попробуйте в следующем iFlow

Узнайте, что Kitegra добавляет к дизайнеру SAP Integration Suite, или посмотрите его рядом с другими расширениями Kitegra для Chrome.

Частые вопросы

Как вызвать HTTPS-эндпоинт SAP CPI с OAuth?

Получите токен по URL токенов из сервисного ключа с grant client credentials, затем вызовите эндпоинт с заголовком Authorization: Bearer и этим токеном.

Какой сервисный ключ нужен?

Сервисный ключ экземпляра Process Integration Runtime с сервисным планом integration-flow и ролью, которой разрешено отправлять сообщения.

Почему мой HTTPS iFlow возвращает 403?

Обычно роли ключа не разрешено отправлять сообщения, или отправитель HTTPS требует CSRF-токен.

Как найти сообщение, которое создал мой вызов?

Прочитайте заголовок ответа SAP_MessageProcessingLogID: это Message ID вызова.

Где HTTP Runner хранит мой сервисный ключ?

В вашем браузере. Синхронизированные коллекции никогда не содержат значений авторизации и секретных переменных.

HTTP Runner бесплатен?

Да. Он часть Toolbox, которая не учитывается в iFlow вашего тарифа.

Работайте с iFlows, не покидая дизайнер

Добавьте Kitegra в Chrome или Microsoft Edge. Начните бесплатно, без аккаунта.