본문으로 건너뛰기
← 블로그로 돌아가기

이 글의 모듈: 도구 상자

서비스 키로 SAP CPI HTTPS iFlow 테스트하고 호출 트레이스하기

Process Integration Runtime 서비스 키의 OAuth 클라이언트 자격 증명으로 SAP CPI HTTPS 엔드포인트를 호출하고, 호출이 만든 메시지를 찾아 단계별로 트레이스합니다.

서비스 키로 SAP CPI HTTPS iFlow 테스트하고 호출 트레이스하기

HTTPS 발신자가 있는 iFlow는 배포하기는 쉽지만 호출하기는 의외로 번거롭습니다. 올바른 엔드포인트, 올바른 서비스 키에서 받은 토큰, 때로는 CSRF 토큰이 필요하고, 그다음에도 호출이 만든 메시지를 모니터에서 찾아야 합니다.

이 글에서는 SAP Cloud Integration(SAP CPI)에서 이 전체 과정을 따라갑니다. 필요한 것, 토큰을 받아 엔드포인트를 호출하는 방법, 그 결과로 생긴 메시지를 찾는 방법, 그리고 그 메시지를 트레이스하는 방법입니다.

필요한 것

  • HTTPS 발신자 채널이 있는 배포된 iFlow. 채널의 Address(예: /orders/create)가 엔드포인트의 일부가 됩니다.
  • 엔드포인트 URL: 런타임 호스트 뒤에 /http와 주소가 붙습니다. 모니터의 Manage Integration Content에서 배포된 iFlow의 URL을 볼 수 있습니다.
  • 서비스 플랜 integration-flow와 메시지를 보낼 수 있는 역할을 가진 Process Integration Runtime 서비스 인스턴스, 그리고 client ID와 secret이 들어 있는 그 인스턴스의 서비스 키.
  • 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은 비밀번호처럼 다루세요. 공유 파일, 티켓, 채팅에 키를 남기지 마세요.

엔드포인트를 호출하고 응답 읽기

호출은 두 번의 요청으로 이루어집니다. 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: 토큰이 없거나, 만료되었거나, 다른 하위 계정(subaccount)의 토큰입니다.
  • 403: 서비스 키의 역할로는 메시지를 보낼 수 없거나, HTTPS 발신자가 CSRF 토큰을 요구합니다. 테스트 엔드포인트라면 채널에서 CSRF 보호를 끄거나 먼저 토큰을 가져오세요.
  • 404: 주소가 틀렸거나 iFlow가 배포되어 있지 않습니다.
  • 500: iFlow가 실패했습니다. 메시지 처리 로그에 실패 위치가 나옵니다.

상태와 관계없이 응답 header SAP_MessageProcessingLogID가 호출의 Message ID를 알려 주며, 이것으로 메시지를 열 수 있습니다. Message ID로 메시지 찾기를 참고하세요.

브라우저에서 HTTP Runner로 하기

Kitegra의 Toolbox에는 iFlow 엔드포인트용 HTTP Runner가 있습니다. 확장 프로그램 팝업의 “도구” 보기에서 여세요.

  • “새 컬렉션”과 “새 요청”으로 GET, POST, PUT, PATCH, DELETE, HEAD 요청을 모은 컬렉션을 만들 수 있습니다. 쿼리 매개변수, 헤더, JSON·XML·텍스트 본문이나 파일도 넣을 수 있습니다.
  • {{variables}}와 환경(dev, test, prod): “새 환경”으로 추가하거나 “환경 없음”으로 보냅니다. “비밀”로 표시한 변수의 값은 이 브라우저에만 남습니다.
  • 인증: “컬렉션에서”, “없음”, “Basic”, “Bearer 토큰”, “OAuth2 클라이언트 자격 증명(서비스 키)” 중에서 고릅니다. 마지막은 “서비스 키(Process Integration Runtime)”의 JSON을 붙여 넣으면 토큰을 대신 가져옵니다. client secret이 있는 키가 필요하며, 인증서 기반 키는 지원하지 않습니다.
  • “테스트”는 응답을 확인하고(“상태 일치”, “본문 포함”, “JSONPath 일치”, “XPath 일치”), “추출”은 응답의 값을 변수에 저장하며, “컬렉션 실행”은 컬렉션 전체를 순서대로 보냅니다.
  • Postman 또는 OpenAPI에서 HTTP 수신기로에서처럼 “가져오기” → “Postman 컬렉션”으로 Postman 컬렉션을 가져올 수 있고, “데이터 세트” 탭의 “각 페이로드 보내기”는 테스트 페이로드 생성기의 데이터 세트에 있는 페이로드를 하나씩 보냅니다.

“보내기”를 클릭하기 전에는 아무것도 보내지 않으며, SAP 쿠키는 절대 함께 보내지 않습니다. Runner는 *.hana.ondemand.com 아래의 호스트만 호출합니다. 호출 후 “모니터에서 열기”를 누르면 SAP_MessageProcessingLogID로 메시지를 로그 뷰어에서 엽니다. 엔드포인트에서 디자이너 호스트를 알 수 없으면 환경에 “모니터에서 열기용 테넌트(디자이너 호스트)”를 설정하세요.

호출 트레이스하기

  1. 디자이너에서 iFlow를 열고 “Kitegra 도구” 버튼에서 “메시지”를 연 뒤 “Trace: 꺼짐”을 켜세요.
  2. Runner에서 “보내기”를 클릭하거나 curl로 엔드포인트를 호출하세요.
  3. 메시지가 TRACE 표시와 함께 “메시지” 패널에 나타납니다. “다이어그램에”를 선택하세요.
  4. 색칠된 단계를 클릭하면 그 전의 본문, header, exchange property가 보입니다.

메시지를 단계별로 트레이스하기에서 트레이스 패널을 자세히 다룹니다.

Kitegra가 도와주는 방법

Kitegra에서 서비스 키, 인증 값, 비밀 변수는 브라우저에 머뭅니다. 로그인하면 Runner의 컬렉션과 환경이 모든 인증 값과 비밀 변수를 제거한 상태로 Kitegra 계정과 동기화됩니다. Runner는 무료인 Toolbox에 속하고, 트레이스와 로그 뷰어는 Message Monitor에 속합니다.

Helper, Message Monitor, iFlow Inspector, iFlow Docs는 각각 사용한 iFlow 수를 셉니다. Kitegra 계정이 없으면 모듈당 5개, Free 요금제는 50개, Starter는 100개, Pro는 300개이며 Business는 제한이 없습니다. Toolbox와 작업 공간 부가 기능은 무료입니다. 요금제 비교하기.

다음 iFlow에서 사용해 보세요

Kitegra가 SAP Integration Suite 디자이너에 무엇을 더하는지 읽어 보거나, Kitegra의 다른 Chrome 확장 프로그램과 함께 살펴보세요.

자주 묻는 질문

OAuth로 SAP CPI HTTPS 엔드포인트를 호출하려면 어떻게 하나요?

client credentials 그랜트로 서비스 키의 토큰 URL에서 토큰을 받은 다음, Authorization: Bearer header와 그 토큰으로 엔드포인트를 호출하세요.

어떤 서비스 키가 필요한가요?

서비스 플랜 integration-flow와 메시지를 보낼 수 있는 역할을 가진 Process Integration Runtime 인스턴스의 서비스 키입니다.

HTTPS iFlow에서 403이 나는 이유는 무엇인가요?

대개 키의 역할로는 메시지를 보낼 수 없거나, HTTPS 발신자가 CSRF 토큰을 요구하기 때문입니다.

내 호출이 만든 메시지는 어떻게 찾나요?

응답 header SAP_MessageProcessingLogID를 읽으세요. 그것이 호출의 Message ID입니다.

HTTP Runner는 서비스 키를 어디에 보관하나요?

브라우저에 보관합니다. 동기화된 컬렉션에는 인증 값이나 비밀 변수가 절대 포함되지 않습니다.

HTTP Runner는 무료인가요?

네. 요금제의 iFlow 수에 포함되지 않는 Toolbox에 속합니다.

디자이너를 떠나지 않고 iFlow 작업하기

Kitegra을 Chrome 또는 Microsoft Edge에 추가하세요. 계정 없이 무료로 시작할 수 있습니다.