본문 바로가기
IBM - old/IBM APIC

HTTP Proxy 서비스 사용해서 HTTP 프로토콜로 API 서비스 호출하기

by freeman98 2016. 6. 7.

IBM API Management v4.0
HTTP Proxy 서비스 사용해서 HTTP 프로토콜로 API 서비스 호출하기


0) Datapower 의 HTTP Proxy 서비스가 필요한 경우

APIM 은 기본적으로 API 를 대외 오픈하는 목적이라 기본적으로 HTTPS 프로토콜을 지원합니다. 그러나내부 서비스 목적이어서 HTTP 로 API 서비스를 하고자 할때 또는 신뢰된 연결이라 HTTP 로 연결하고 싶을 때는 실제 API 서비스를 수행하는 API Gateway 인 Datapower 에서 HTTP Proxy 를 추가하는 형태로 APIM 에서 HTTP 서비스를 사용할 수 있습니다.

이때, 서비스 업그레이드나 Fixpack 적용에 영향을 받지 않도록 APIM 이 자동으로 등록한 도메인을 사용하지 않고 새로운 도메인을 생성해서 HTTP 서비스 처리를 위한 MPGW 을 생성하며 관리적인 측면에서 좀 더 수월합니다. (이전에 이를 이용해서 성능 테스트를 해봤는데 내부 서비스 연계라 성능 손실은 미미했었습니다.)


1) Datapower 의 도메인 및 SSL 을 위한 key/certificate 생성


0. 참고 링크 :
Generating keys and certificates
https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/cryptotool_generatingkeyscertificates.html

1.  Datapower 에 접속하여 Administration > Configuration > Application Domain 메뉴에서 Add 를 클릭합니다.


2. 새로운 Domain 이름을 입력하고 완료합니다.


3. 새로 생성한 도메인으로 접속합니다.


새로 생성한 도메인에서 HTTPS 와 SSL 연결을 위하여 private key 와 certificate 를 생성하도록 하겠습니다.

4. Administration > Miscellanepous > Crypto Tools 메뉴를 클릭하여 하단과 같이 기본 정보를 넣은 후에 Generate 버튼을 클릭하여 private key 와 certificate 를 생성합니다.


5. 정상적으로 private key 와 certificate 가 생성되었다면 하단과 같이 File management 에서 cert: 에 생성된 key 와 certificate 를 확인 가능합니다.


6. 생성된 key 와 certificate 가 적용된 Crypto Profile 을 생성하기 위해서 Objects > Crypto Configuration > Crypto Profile 메뉴를 클릭한 후 Add 버튼을 클릭합니다. 


7. 이름을 입력하고 Identification Credentials 의 + 버튼을 클릭합니다.


8. 이름을 입력하고 Crypto Key 와 Certificate 에 이전에 작성한 private key 와 certificate 를 넣어주고 Apply 를 클릭합니다.


9. 나머지 단계도 Apply 를 모두 클릭하여 Crypto profile 을 작성을 완성합니다.

여 기까지 하셨으면 새로 만들어진 Domain 에서 사용할 private key/certificate 작성을 완료한 것입니다. 이제 실제적으로 서비스에서 사용할 HTTP 서비스를 받을 MPGW(Multi-protocol Gateway) 를 만들어 보도록 하겠습니다.

 
2) Datapower 의 MPGW(Multi-Protocol Gateway) 서비스 작성

0. 참고 링크 :
https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.2.0/com.ibm.dp.doc/mpgw_wizard.html

1. Control Panel 을 클릭하여 메인 메뉴가 나오면 Services 중에 Multi-Protocol Gateway 를 선택합니다.


2. 해당 메뉴가 나오면 Add 버튼을 클릭합니다.


3. MPGW 의 이름을 입력하고 Policy 는 기본으로 설정합니다. 추가적으로 Degault Backend URL 은 실제로 연결할 HTTPS URL 이므로 원래 Gateway 가 서비스되는 주소:port 를 넣어주면 됩니다.


4. Front Side Protocol 의 ‘+’ 버튼을 클릭하여 추가하고자 하는 Handler 를 선택합니다. 여기서는 기 언급한 것과 같이 HTTP Front Side Handler 를 추가하면 됩니다. 


5. 추가 마법사가 나오면 이름, IP, Port 들을 입력하고 허용할 메소드를 선택하고 완료합니다. 


 
6. 위의 작업을 잘 수행하면 HTTP Front Side Handler 가 추가된 것을 확인할 수 있습니다.


7. 그 하단에 미리 만들어진 Crypto Profile 을 넣어주고 response 와 request 는 ‘Pass through’ 을 선택합니다.(요청/응답 아무것도 손대지 않고 넘긴다는 이야기임)


8. 일반적인 서비스 허용을 위해서 Advanced 탭으로 가서 하단의 옵션들의 설정을 변경합니다. 


팁 : 상단의 Persistent connections 은 off 를 선택해주어야 합니다. 그렇다고 지속적 연결을 완전히 끄는 것은 아니고 Datapower 내부의 chaind service 에 loop 를 없애기 위한 목적으로 사용됩니다. 다시말하여 HTTP 서비스와 HTTPS 서비스 간의 연결시에 loop 를 끊기 위한 목적입니다. 해당 옵션을 off 로 하여도 Datapower 의 외부하고는 지속적 연결(keepalive)을 사용하게 됩니다.

참고 :
Turn OFF Persistent Connection between local chained services on DataPower
http://sunnygoel87.blogspot.kr/

Best Practices for configuring local chained services on IBM DataPower Gateways
http://www-01.ibm.com/support/docview.wss?uid=swg21417934



9. 위의 설정들이 정상적으로 완료가 되면 하단과 방금 작성한 MPGW 의 서비스가 up 인 것을 확인 가능합니다.



3) HTTP proxy 사용을 위한 APIM 설정 변경 및 테스트

1. 우선 원래 HTTPS 목적으로 서비스 되는 URL 을 하나 확인합니다.


2. 해당 URL 에서 이번에 생성한 MPGW 로 변경시 정상적으로 서비스가 호출되는 것을 확인합니다.


3. API Management 콘솔에 접속하여 Environment 에서 HTTP 서비스를 사용하도록 변경할 Environment 설정의 Custom Gateway URL 을 HTTP 서비스를 위해 만들어둔 MPGW 의 IP:Port 를 사용하도록 변경합니다. 


4. 개발자 포탈로 가서 URL 이 HTTPS 가 아니라 HTTP 로 변경된 것을 확인하고 테스트가 정상적으로 된 것을 확인합니다. 



팁 : Chrome 에서 테스트하는 경우 하단과 같은 Exception 을 받게 됩니다. 그 이유는 전체적으로 https 프로토콜 안에서 내부적으로 http 프로토콜을 호출하므로 보안 경고와 같은 것입니다. 


 

이 경우 크롬 브라우저의 오른쪽 맨위에 방패 모양의 아이콘을 클릭한 후 Load Unsafe scripts 를 클릭하면 해당 Exception 을 해결할 수 있습니다.


APIM40_guide_HTTP_juwlee201602.pdf


댓글