본문으로 바로가기
링크허브 공식블로그

연동이 쉬워진다

링크허브 공식블로그

자주 묻는 질문

[팝빌 API] "Token's ipaddress is mismatch." 오류 메시지 발생원인 및 해결방법



최근 개발자들이 인프라 관리보다 프로그램 개발에 집중할 있는 개발환경을 선호하는 추세에 따라, 기업들도 클라우드 인프라를 이용한 시스템 개발이 퍼지고 있습니다. 이에 발맞추어 링크허브에서는 다양한 클라우드 인프라에서 API 연동하는 과정에서 발생하는 각종 이슈와 트러블슈팅에 적극적으로 대응하여, 효율적이고 안정적인 서비스 제공을 위해 다양한 기술지원을 제공하고 있습니다. 


오늘 포스팅에서는 구글 App Engine에서 팝빌 API SDK를 이용하여 연동개발 진행과정에서 발생할 수 있는 "Token`s ipaddress is mismatch" 오류 메시지의 발생원인과 해결방법에 대해서 상세히 안내 드리겠습니다. 참고로 예시는 팝빌 전자세금계산서 API PHP v5.x SDK Example 기준으로 작성되었음을 알려드립니다.


※ Google App Engine은 구글 클라우드 플랫폼(GCP)에서 제공하는 서비스 중 하나로 가상머신을 직접 관리 할 필요 없이 단순히 코드를 배포하면 플랫폼이 모든 작업을 수행하기때문에 최소한의 관리로 개발에만 집중 할 수 있도록 하는 장점이 있는 서비스입니다.



▶ "Token`s ipaddress is mismatch." 오류 메시지 발생원인


팝빌 API에서는 안전한 통신환경에서 서비스를 제공하기 위해서 아마존과 구글에서 이용하는 방식과 같은 '토큰(Token)'으로 링크허브로부터 정상적으로 사용을 허가받은 사용자임을 인증합니다. 하지만 구글 App Engine 인프라에서는 토큰을 정상적으로 발급하고 API 호출 시점에 "Token`s ipaddress is mismatch." 라는 오류가 발생할 수 있습니다. 


오류 메시지 발생원인은  링크허브 인증서버로부터 토큰을 발급받은 서버 IP와 팝빌 API를 호출하는 서버 IP가 서로 다른 경우, 링크허브에서는 해당 호출을 비정상적으로 간주하고 오류 메시지를 반환합니다. 


팝빌 전자세금계산서 API SDK - GetInfo 호출 결과 발생하는 오류 메시지 [linkhub exception]


구글 App Engine은 고정 IP 주소를 응용 프로그램에 매핑하는 방법이 제공되지 않고 호출 시 마다 Google IP Pool 영역에서 랜덤으로 제공하는데, 이는 최종 사용자와 App Engine 애플리케이션 간의 네트워크 경로를 최적화하기 위해 구글에서 다른 ISP 또는 다른 지리적 위치의 최종 사용자가 서로 다른 IP 주소를 사용하여 동일한 App Engine 어플리케이션에 접근 할 수 있도록 설계되었기 때문입니다. [Google App Engine Dynamic IP Address]


구글 App Engine에서 어플리케이션에 동적 아이피를 할당하는 특징으로 인해 다음 절차에 의해 팝빌 API SDK에서 토큰을 발급받는 부분의 소스코드 수정이 필요합니다.


STEP 1> 토큰 검증오류 확인 → API 호출 시마다 IP 주소가 바뀌는지 확인

SETP 2> 토큰 검증오류 해결 → 팝빌 API SDK 토큰 발급 소스코드 forwordIP 적용

SETP 3> 토큰 검증 테스트 → 구글 App Engine 인프라에서 팝빌 API SDK 정상작동 여부 테스트




STEP 1> 토큰 검증오류 확인 → API 호출시마다 IP 주소가 바뀌는지 확인


먼저, 구글 App Engine을 이용하는 고객사가 팝빌 API를 호출할 때마다 IP 주소가 매번 바뀌는지 확인해 보도록 하겠습니다.

전자세금계산서 API - GetInfo 호출시 targetToken 반환결과 ipaddress는 API를 호출한 클라이언트의 IP 주소입니다.

[ ./popbill.sdk.example.php/Popbill/popbill.php ] - API를 호출한 클라이언트 IP주소 출력


구글 App Engine에서는 API를 호출시마다 Request 요청하는 클라이언트의 IP 주소가 다른것을 확인하실 수 있습니다.



STEP 2> 토큰 검증오류 해결 → 팝빌 API SDK 토큰 발급 소스코드 와일드카드 적용


팝빌 서비스를 사용하기 위한 토큰은 '링크허브 인증방식을 통해서 발급받게 되는데 인증처리는 팝빌에서 제공하는 SDK에 모두 구현이 되어 있습니다.

인증처리 방식과 기법에 대한 설명은 팝빌 연동매뉴얼을 참고하시면 됩니다. 


와일드카드 적용 방법은 팝빌 SDK에서 Token을 발급받는 함수를 호출할 때 forwordIP 값을 지정해주는 파라미터에 "*" 을 넘겨주면 됩니다.

와일드카드 적용 후 발급받은 토큰은 인증서버 IP와 API 기능을 호출하는 서버 IP가 같지 않아도 사용할 수 있습니다.


▶ PHP SDK 와일드카드 적용 방법  


[ ./Popbill.sdk.example/Popbill/popbill.php ]

Linkhub객체의 getToken함수 마지막 파라미터(forwordIP)에 "*" 값을 추가합니다. (forwordIP는 Nullable Type) 



▶ 와일드카드 적용 후 getToken 함수의 리턴값


forwordIP 와일드카드 적용 후 Linkhub객체의 getToken 함수 리턴 값 


STEP 3> 토큰 검증 테스트 → 구글 App Engine 인프라에서 팝빌 API  SDK 정상작동 여부 테스트


STEP 2에서 알려드린 바와같이 팝빌 API SDK에 forwordIP를 정상적으로 적용 하였다면, 구글 App Engine에서 API를 호출시 다음과 같은 정상적인 호출 결과를 확인할 수 있습니다.

forwordIP를 적용하여 Token 발급받은 후 세금계산서 GetInfo API 호출에 따른 정상적인 결과


클라우드는 서버/스토리지/네트워크 등 수많은 IT 인프라 구축을 위해 투입되는 초기 도입비용을 절약할 수 있으며, 적재적소에 리소스를 투입이 가능할 뿐 아니라 높은 SLA(Service Level Agreement)를 보장하여 안정적인 서비스 제공이 가능하여 앞으로도 꾸준히 성장할 것으로 예측됩니다. 


링크허브에서는 아마존 AWS, MS Azure, 구글 GCP 외에도 다양한 클라우드 환경을 이용하시는 고객사들께서 효율적이고 안정적인 서비스 지원을 위해 앞으로도 지속해서 노력해 나갈 것을 약속드리며 이번 포스팅을 마무리 하도록하겠습니다.





고객사들의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 편하게 연락주시기 바랍니다.
링크허브 기술지원센터 / T. 1600-9854 / E. code@linkhub.co.kr







  • Today
  • Total