Vai al contenuto
Kitegra
← Torna al blog

Modulo di questo articolo: Cassetta degli attrezzi

Testare un iFlow HTTPS di SAP CPI con una service key e poi tracciare la chiamata

Chiamare un endpoint HTTPS di SAP CPI con OAuth client credentials da una service key di Process Integration Runtime, trovare il messaggio creato e tracciarlo step by step.

Testare un iFlow HTTPS di SAP CPI con una service key e poi tracciare la chiamata

Un iFlow con sender HTTPS è facile da distribuire e sorprendentemente scomodo da chiamare: servono l'endpoint giusto, un token dalla service key giusta, a volte un token CSRF, e poi devi ancora trovare nel monitor il messaggio creato dalla tua chiamata.

Questo articolo percorre l'intero ciclo per SAP Cloud Integration (SAP CPI): cosa ti serve, come ottenere un token e chiamare l'endpoint, come trovare il messaggio risultante e come tracciarlo.

Cosa ti serve

  • Un iFlow distribuito con un canale sender HTTPS. Il suo Address, per esempio /orders/create, diventa parte dell'endpoint.
  • L'URL dell'endpoint: l'host del runtime seguito da /http e dall'indirizzo. Manage Integration Content nel monitor lo elenca per l'iFlow distribuito.
  • Un'istanza del servizio Process Integration Runtime con il service plan integration-flow e un ruolo autorizzato a inviare messaggi, e una service key di quell'istanza con client ID e secret.
  • Un payload di test che l'iFlow accetta.

Ottenere un token e chiamare l'endpoint

La service key contiene ciò che serve alla chiamata: client ID e secret, l'URL del servizio dei token e l'host del runtime:

{
  "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"
  }
}

Tratta il client secret come una password: tieni la chiave fuori da file condivisi, ticket e chat.

Chiamare l'endpoint e leggere la risposta

La chiamata richiede due richieste: un token con il grant client credentials, poi la chiamata vera e propria con quel token:

# 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: il token manca, è scaduto o proviene da un altro subaccount.
  • 403: il ruolo della service key non può inviare messaggi, oppure il sender HTTPS richiede un token CSRF. Per un endpoint di test puoi disattivare la protezione CSRF nel canale, oppure ottenere prima un token.
  • 404: l'indirizzo è sbagliato, oppure l'iFlow non è distribuito.
  • 500: l'iFlow non è riuscito; il message processing log dice dove.

Qualunque sia lo stato, l'header di risposta SAP_MessageProcessingLogID fornisce il Message ID della chiamata, e con esso puoi aprire il messaggio: vedi trovare un messaggio per Message ID.

Farlo nel browser con l'HTTP Runner

La Toolbox di Kitegra include un HTTP Runner per gli endpoint dei tuoi iFlow. Aprilo dalla vista Strumenti del popup dell'estensione.

  • «Nuova raccolta» e «Nuova richiesta» creano una raccolta di richieste con GET, POST, PUT, PATCH, DELETE o HEAD, parametri di query, header e un corpo JSON, XML o di testo, oppure un file.
  • {{variables}} e ambienti (dev, test, prod): aggiungine uno con «Nuovo ambiente», oppure invia con «Nessun ambiente». Una variabile segnata come «Segreta» tiene il suo valore in questo browser.
  • Auth: «Dalla raccolta», «Nessuna», «Basic», «Token Bearer» oppure «OAuth2 client credentials (service key)», dove incolli il JSON di una «Service key (Process Integration Runtime)»; il token viene recuperato per te. Serve una chiave con client secret; una chiave basata su certificato non è supportata.
  • «Test» verifica la risposta («Stato uguale a», «Il corpo contiene», «JSONPath uguale a», «XPath uguale a»), «Estrai» ne salva dei valori in variabili ed «Esegui raccolta» invia l'intera raccolta in ordine.
  • «Importa» → «Raccolta Postman» porta dentro una raccolta Postman, come in da Postman o OpenAPI a un receiver HTTP, e nella scheda «Set di dati», «Invia ogni payload» invia ogni payload di un set di dati del generatore di payload di test.

Non parte nulla finché non fai clic su «Invia», e i tuoi cookie SAP non vengono mai inviati. Il Runner chiama solo host sotto *.hana.ondemand.com. Dopo una chiamata, «Apri nel monitor» apre il messaggio dal suo SAP_MessageProcessingLogID nel visualizzatore dei log; se l'host del designer non si ricava dall'endpoint, imposta «Tenant (host del designer) per Apri nel monitor» nell'ambiente.

Tracciare la chiamata

  1. Apri l'iFlow nel designer, apri Messaggi dal pulsante «Strumenti Kitegra» e porta «Trace: disattivato» su attivo.
  2. Fai clic su «Invia» nel Runner, oppure chiama l'endpoint con curl.
  3. Il messaggio compare nel pannello Messaggi con un segno TRACE. Scegli «Sul diagramma».
  4. Fai clic su uno step colorato per vedere body, header ed exchange property prima di esso.

Tracciare un messaggio step by step tratta in dettaglio il pannello del trace.

Come aiuta Kitegra

In Kitegra, la service key, i valori di autenticazione e le variabili segrete restano nel tuo browser. Con l'accesso, le raccolte e gli ambienti del Runner si sincronizzano con il tuo account Kitegra, privati di ogni valore di autenticazione e di ogni variabile segreta. Il Runner fa parte della Toolbox, che è gratuita; il tracing e il visualizzatore di log appartengono al Message Monitor.

Helper, Message Monitor, iFlow Inspector e iFlow Docs contano ciascuno gli iFlow su cui li usi: 5 per modulo senza un account Kitegra, 50 con il piano Free, 100 con Starter e 300 con Pro; Business non ha limiti. La Toolbox e gli extra dell'area di lavoro sono gratuiti. Confronta i piani.

Provalo nel tuo prossimo iFlow

Scopri cosa aggiunge Kitegra attorno al designer di SAP Integration Suite, oppure guardalo accanto alle altre estensioni Chrome di Kitegra.

Domande frequenti

Come chiamo un endpoint HTTPS di SAP CPI con OAuth?

Ottieni un token dall'URL del token della service key con il grant client credentials, poi chiama l'endpoint con l'header Authorization: Bearer seguito dal token.

Quale service key mi serve?

Una service key di un'istanza di Process Integration Runtime con il service plan integration-flow e un ruolo autorizzato a inviare messaggi.

Perché il mio iFlow HTTPS risponde 403?

Di solito il ruolo della chiave non può inviare messaggi, oppure il sender HTTPS richiede un token CSRF.

Come trovo il messaggio creato dalla mia chiamata?

Leggi l'header di risposta SAP_MessageProcessingLogID: è il Message ID della chiamata.

Dove conserva la mia service key l'HTTP Runner?

Nel tuo browser. Le raccolte sincronizzate non includono mai valori di autenticazione né variabili segrete.

L'HTTP Runner è gratuito?

Sì. Fa parte della Toolbox, che non conta per gli iFlow del tuo piano.

Lavora sugli iFlow senza uscire dal designer

Aggiungi Kitegra a Chrome o Microsoft Edge. Inizia gratis, senza bisogno di un account.