Skip to content

006. 간편인증 다건 요청

Haebin edited this page Nov 29, 2024 · 2 revisions

Note

아래 예제는 모두 건강보험공단 > 건강검진결과 API 개발가이드를 기반으로 작성됐어요.
아래 예제는 현재 easycodef-java-v2가 지원하는 간편인증 호출 방법만을 다뤄요.
다음 개발가이드 항목을 참고하면 이해가 쉬워요.

Tip

EasyCodef를 활용해 추가 인증을 진행하기 위해서 아래 과정이 선행되어야 해요.

Important




Note

  • 다건요청은 동일 기관의 여러 API를 1회 추가 인증으로 모든 응답을 가져올 수 있는 기능이에요.
  • easycodef-java-v2는 다건 요청시 고객사가 쓰레드나 비동기 기능을 활용해 http 응답 대기를 해소하는 구현 과정을
    JDK 21의 가상 쓰레드 기능을 활용해 자원 친화적으로 풀어낸 라이브러리예요.

Important

  • 원하는 호출 상품이 다건요청을 지원하는 상품인지 먼저 확인해보세요.
    개발가이드 > 상품 > API > #다건요청
  • 다건요청은 동일 대상기관(organization)의 상품끼리 묶어서 호출이 가능합니다.

Tip

CF-03002는 엔드유저에게 추가인증을 요청하고, 이와 관련된 데이터를 반환해요.
본 예제에서 다루는 간편인증 다건요청의 경우, 아래와 같이 간단하게 도식화 할 수 있어요.
간편인증은 엔드유저의 인증 완료 여부만 확인 후, requestMultipleSimpleAuthCertification 메소드를 호출하면 쉽게 연동할 수 있어요.



1. 다중 상품 요청 객체 생성

Tip

단일 상품 요청 객체 생성은 003. 상품 요청 객체 생성을 참고하세요.

Important

EasycodefRequest request1;
EasycodefRequest request2;
EasycodefRequest request3;
EasycodefRequest request4;
EasycodefRequest request5;

List<EasyCodefRequest> requests = List.of(request1, request2, request3, request4, request5)



2. 상품 다건요청

Important

Codef API 상품 다건요청 메소드

이번 예제는 고객사 서버에서 다건요청 간편인증 상품을 호출하고, CF-03002 응답을 받았다고 가정해볼게요.

아래 코드는 CF-03002 응답을 받았을 때, Client FE에 추가인증에 필요한 transactionId를 반환하는 다양한 방법을 설명해요.
고객사의 아키텍쳐 설계 방식에 따라 아래 case중 선택해, client FE에 유효한 transactionId를 반환하고, 추가 요청간 이를 활용하세요.

EasyCodef easyCodef;       // 002. 시크릿 키 기반 EasyCodef 객체 생성 Page 참고
List<EasyCodefRequest> requests = List.of(request1, request2, request3, request4, request5);

EasyCodefResponse response = easyCodef.requestMultipleProduct(requests);
return response;

Tip

transactionId만 반환하는 Dto 객체도 활용 가능해요.

EasyCodefResponse response = easyCodef.requestProduct(request);

CodefTransactionIdResponse transactionIdResponse = 
        new CodefTransactionIdResponse(response.transactionId);

return transactionIdResponse;

Warning

requestMultipleProduct 메소드는 아래의 예외 사항들을 같이 검증하고, 검증에 실패하면 예외를 반환해요.

Tip

1차 요청 성공 시 예시 응답

{
    "result": {
        "code": "CF-03002",
        "extraMessage": "API 요청 처리가 정상 진행 중입니다. 추가 정보를 입력하세요.",
        "message": "성공",
        "transactionId": "673d39ddec82017e742f9f1c"
    },
    "data": {
        "jobIndex": 0,
        "threadIndex": 0,
        "jti": "673d39ddec82017e742f9f1c",
        "twoWayTimestamp": 1732065758977,
        "continue2Way": true,
        "extraInfo": {
            "commSimpleAuth": ""
        },
        "method": "simpleAuth"
    }
}



3. 다건 요청 추가인증 요청 예제

Important

단건 간편 인증 완료 요청 메소드

EasyCodef easyCodef;       // 002. 시크릿 키 기반 EasyCodef 객체 생성 Page 참고
List<EasyCodefRequest> requests = List.of(request1, request2, request3, request4, request5);

EasyCodefResponse response = easyCodef.requestMultipleProduct(requests);

// 간편하게 트랜잭션 ID 파싱 가능
String transactionId = response.transactionId()

// 엔드유저가 간편인증을 완료 한 이후에, 트랜잭션 아이디를 파라미터로 아래 메소드 호출
List<EasyCodefResponse> addAuthResponses = 
               easycodef.requestMultipleSimpleAuthCertification(transactionId);

Tip

다건 요청 성공시 예시 응답
(예시 json 후략)

[
    {
        "result": {
            "code": "CF-00000",
            "extraMessage": "",
            "message": "성공",
            "transactionId": "673d39deec82017e742f9f1d"
        },
        "data": {
            "resPreviewList": [],
            "resReferenceList": [
                {
                    "resType": "단위",
                    "resHeight": "Cm",
                    "resWeight": "Kg",
                    "resWaist": "Cm",
                    "resBMI": "kg/m2",
                    "resSight": "",
                    "resHearing": "",
                    "resBloodPressure": "mmHg",
                    "resUrinaryProtein": "",
                    "resHemoglobin": "g/dL",
                    "resFastingBloodSuger": "mg/dL",
                    "resTotalCholesterol": "mg/dL",
                    "resHDLCholesterol": "mg/dL",
                    "resTriglyceride": "mg/dL",
                    "resLDLCholesterol": "mg/dL",
                    "resSerumCreatinine": "mg/dL",
                    "resGFR": "mL/min",
                    "resAST": "U/L",
                    "resALT": "U/L",
                    "resyGPT": "U/L",
                    "resTBChestDisease": "",
                    "resOsteoporosis": ""
                }
            ],
            "resCheckupTarget": "코드에프",
            "resResultList": []
        }
    },
    {
        "result": {
            "code": "CF-00000",
            "extraMessage": "",
            "message": "성공",
            "transactionId": "673d39dfec82470d00031458"
        },
        "data": {
            "resPreviewList": [],
            "resReferenceList": [
                {
                    "resType": "단위",
                    "resHeight": "Cm",
                    "resWeight": "Kg",
                    "resWaist": "Cm",
                    "resBMI": "kg/m2",
                    "resSight": "",
                    "resHearing": "",
                    "resBloodPressure": "mmHg",
                    "resUrinaryProtein": "",
                    "resHemoglobin": "g/dL",
                    "resFastingBloodSuger": "mg/dL",
                    "resTotalCholesterol": "mg/dL",
                    "resHDLCholesterol": "mg/dL",
                    "resTriglyceride": "mg/dL",
                    "resLDLCholesterol": "mg/dL",
                    "resSerumCreatinine": "mg/dL",
                    "resGFR": "mL/min",
                    "resAST": "U/L",
                    "resALT": "U/L",
                    "resyGPT": "U/L",
                    "resTBChestDisease": "",
                    "resOsteoporosis": ""
                }
            ],
            "resCheckupTarget": "코드에프",
            "resResultList": []
        }
    }
]

Important

꼭 다시 확인해주세요!

  • requestMultipleSimpleAuthCertification() 메소드의 실행 결과 리스트에 단일 객체로
    CF-03002, CF-12872 응답이 반환된다면, 개발가이드 > 공통가이드 > 간편인증 재시도를 참고하세요.
  • requestMultipleSimpleAuthCertification() 메소드는, 반드시 엔드유저가 간편인증을 마친 후에 요청해주세요.