API 적용개발 가이드

HOME > 이용안내 > API 적용개발 가이드
Mega Process

시설과 qcheck 사이는 https로 REST통신을 한다. 그리고 전송하는 body 데이터는 기본적으로 AES256알고리즘으로 암호화하여 전송하도록 한다. 그리고 헤더에는 반드시 토큰을 발급받아 x-access-token이라는 키에 담아서 전송하도록 한다.

API 적용개발 가이드 다운로드
Mega process 이미지
Data Flow 상세
Data Flow 이미지
연계테스트
>연계테스트 예시 이미지

위 이미지는 postman을 활용한 테스트 화면이며, 실제 시스템들은 HttpClient 같은 유틸리티를 활용하여 request 를 보내는 모듈을 개발하면 됩니다.
샘플로 제공한 CryptoUtil.java , CryptoTest.java 참조 및 활용하세요.

qcheck에서 데이터 암복호화 예시
String strUid = (String) hmap.get("UID");

String test = "9fc7getm1hqgOH4zyx/HcDVkl4QE9kPf52EGer+cPPN1iP6uzEFjlM+bcC92C4J/zGTFqKbG5WiFGW4+VJJlVxif4tnp3qtHnE0n6/zqwl4sf4zZBkn/zeCO382RXJoP2l2crI6Vk9W9U/1Q+paViF1+CTw=";

// 복호화

String strInJson = CryptoUtil.decryptAES256(test, strUid);

// 서비스 호출하기 위하여 param을 Map 에 담아서 활용한다.

ObjectMapper mapper = new ObjectMapper();
Map hm_body = mapper.readValue(strInJson, Map.class);

{중간생략}

Map map = Service.call(hm_body); // xml 수신 (gpki 암호화 / 복호화 처리)

// Map -> JSON으로

org.json.simple.JSONObject obj = JsonUtils.getJsonStringFromMap(map);
String strRsltJson = obj.toString(); // Json을 문자열로

{중간생략}

// 문자열을 encrypt 한 후 리턴

String encrypted = CryptoUtil.encryptAES256(strRsltJson, strUid);
return encrypted;

암복화에는 반드시 시설별 UID를 key로 진행하도록 합니다. qcheck에서는 수신받은 token에서 해당 UID를 활용하여 암 복호화 합니다.

encrypted 예)

c5xcqhDqk2sMau5/tQIVLsfuML+sUefH48qi/4CFFWVyVReIEus3za0lUmy+gUcBx7jS4oUvntRCmN2k5NHtr5fO8Z82UD2+J23gNE3OKiJV3KtJ+mXTRSrunfydqobPVrqTwe+pMXQYkYXsVw7iy4h6nb3lO8sN9ZvVUTwB2XwCijCXGY/inAhO1AIskoBWYtO31AaH4KjYe4Zq9H/GTVcmyt7jXUELtszHzYP6mA9e49aE/kn1mdodBPqJVQaRh/UTzOM2GeSVZGc7gCzmhhH2KK9UJsMS9SL7MOdvRMDaXAG/IZyuPw6mAto6P/E4mpUWO4tGDSNw+EQAmXSa3yQzsxwoDaxJc5gfDs0VlbR8kqVZ9bJuTs0yhUurxudPB/LF9Q==

시설별 UID를 key로 암호화 하기때문에 같은 문자열이라도 각 시설별로 암호화 결과값이 상이합니다.

{"result":{"birthDay":“20000101|20051001","serviceResult":"1","orgCode":"1174000001","name":"홍길동","id":"1234561234567","childrenCnt":"2"},"orgCode":"1174000001","name":" 홍길동","LAE_ORG_CD":"6440000","id":" 1234561234567"FA_CD":"FA999"}
HttpClient 예제
String apiUrl = “https://qcheck.chungnam.go.kr/api/v1.0/service/~~~~~~”;

URL url = new URL(apiUrl);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("Content-Type", "application/json;utf-8");
con.setRequestProperty("x-access-token", 발급받은 토큰값(String)));
con.setDoOutput(true);

JSONObject inputString = new JSONObject();

// 입력값들 처리

inputString.put("carNumber", userRdtnVO.getCarNo());
inputString.put("inOutType", userRdtnVO.getInOutType());
inputString.put("dateTime", userRdtnVO.getDateTime());

// json 암호화

// inputString을 String으로 변환 예) inputString = “{\“key\”:\”value\”}”;

String encrypted = CryptoUtil.encryptAES256(inputString.toString(), UID);

// json 발송

OutputStreamWriter os = new OutputStreamWriter(con.getOutputStream(encrypted));
os.write(inputString.toString());
os.flush();

Json 암호화 처리

String encrypted = CryptoUtil.encryptAES256(inputString.toString(), UID);
TOP