메뉴 건너뛰기

2024.04.09 13:26

NICE API 인증모듈

조회 수 1 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

NICE API에서도 잘 나와있고 일반적으로 엑셀에 절차를 가이드로 주는걸로 알고있습니다.

혹시 필요하시분이있을거 같아서 업로드 합니다.

 

 
$url = 'https://svc.niceapi.co.kr:22001/digital/niceid/api/v1.0/common/crypto/token';
    $auth = base64_encode("해당키값1".":".time().":"."해당값2");
    $header = array(
        'Content-Type: application/json',
        'Authorization: bearer '.$auth,
        'client_id:'."해당값3",
        'ProductID:'."해당값4"
    );
    $req_dtim = date("YmdHis");
    $req_no = substr("pc".strtoupper(md5(mt_rand())), 0, 12);
    $post_in = array(
        "req_dtim" => $req_dtim,
        "req_no" => $req_no,
        "enc_mode" => "1"
    );
    $post = array(
        "dataBody"=>$post_in
    );
    $post_en = json_encode($post);
    $ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => $post_en,
        CURLOPT_HTTPHEADER => $header,
    ));
    $rtn = curl_exec($ch);
    curl_close($ch);
    if ($rtn === FALSE) {
        error_log('Curl failed');
        die('Curl failed: ' . curl_error($ch));
    }
   
    $res = json_decode($rtn, true);
 
// ex.
    // [dataBody] => Array (
    // [rsp_cd] => P000
    // [result_cd] => 0000
    // [site_code] => Q....Q=
    // [token_version_id] => 2022.....A0B1A
    // [token_val] => uhzU.....2ypRhE=
    // [period] => 3600 ) )
    $res_cert = $res['dataBody'];
    //대칭키를 생성한다
    $_key = trim($req_dtim).trim($req_no).trim($res_cert['token_val']);
    $_key_hash = base64_encode(hash('sha256',$_key, true));
    $key = substr($_key_hash,0, 16);
    $iv = substr($_key_hash,-16);
    //무결성키를 생성한다
    $hmac_key = substr($_key_hash, 0, 32);
    //키값을 세션에 담아준다(결과데이터 복호화를 위함)
    $_SESSION['_nice_key'] = $key;
    $_SESSION['_nice_iv'] = $iv;
    //요청데이터들 암호화처리시작
    //receivedata=리턴페이지에 전달할 변수나 내용들
    $_data = array(
        "requestno" => $req_no,
        "returnurl" => "도메인/callback.php",
        "sitecode" => $res_cert['site_code'],
        "methodtype" => 'post',
        "popupyn" => 'N',
        "receivedata" => "전달받고싶은내용"
    );
    $data = json_encode($_data, JSON_UNESCAPED_SLASHES);
    $enc_data = base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv));
    //hmac 무결성체크값(intigrety_value) 생성하기
    $hmac = hash_hmac("sha256", $enc_data, $hmac_key, true);
    $intigrety_value = base64_encode($hmac);
    //form 전송할 항목
    $rtn = array(
        "token_version_id" => $res_cert['token_version_id'],
        "enc_data" => $enc_data,
        "integrity_value" => $intigrety_value,
    );
 
<form name="form_chk" id="form_chk" method="get" action="https://nice.checkplus.co.kr/CheckPlusSafeModel/checkplus.cb">
    <input type="hidden" id="m" name="m" value="service" />
    <input type="hidden" id="token_version_id" name="token_version_id" value="<?=$rtn['token_version_id']?>" />
    <input type="hidden" id="enc_data" name="enc_data" value="<?=$rtn['enc_data']?>" />
    <input type="hidden" id="integrity_value" name="integrity_value" value="<?=$rtn['integrity_value']?>" />
    <a href="javascript:fnSubmit();"> CheckPlus 안심본인인증 Click</a>
</form>
<script language='javascript'>
    function fnSubmit(){
        document.form_chk.submit();
    }
</script>
 
 
callback파일
function get_decrypt_nice_data($res_enc_data, $_nice_key, $_nice_iv){
    $_enc_data = base64_decode($res_enc_data); //methodtype post로 설정해서 보냈는데도 get으로 결과값 전달됨..
    //디코딩한 결과데이터 복호화처리 => charset 맞춰주기 => 배열로 디코딩
    $enc_data = openssl_decrypt($_enc_data, 'AES-128-CBC', $_nice_key, OPENSSL_RAW_DATA, $_nice_iv);
    $enc_data = iconv("euc-kr", "utf-8",$enc_data);
    $res_data = json_decode($enc_data, true);    
    return $res_data;
}
$res_data = get_decrypt_nice_data($_REQUEST['enc_data'], $_SESSION['_nice_key'], $_SESSION['_nice_iv']);
 
res_data를 db에 넣어거나 활용하면 끝
 

  1. 그누보드5 검색최적화 방법입니다

    Date2019.04.29 Views876
    Read More
  2. 그누보드 확장변수 사용

    Date2016.12.22 Views2634
    Read More
  3. 그누보드 카카오톡 로그인 V2 플러그인

    Date2021.03.24 Views290
    Read More
  4. 그누보드 이력서 스킨

    Date2021.03.24 Views151
    Read More
  5. 게시판 스킨 파일 구조

    Date2016.12.22 Views2343
    Read More
  6. 게시판 스킨 목록 페이지에 이전 다음 페이지 링크 만들기

    Date2017.04.12 Views1912
    Read More
  7. 게시판 기본 스킨 목록 페이지 살펴보기 2 - 상세 설명

    Date2017.04.13 Views2321
    Read More
  8. 게시판 기본 스킨 목록 페이지 살펴보기 1 - list.skin.php

    Date2017.04.13 Views2959
    Read More
  9. 게시판 기본 스킨 내용보기 페이지 살펴보기 2 - 상세 설명

    Date2017.04.13 Views2528
    Read More
  10. 게시판 기본 스킨 글쓰기 페이지 살펴보기 2 - 상세 설명

    Date2017.04.13 Views2916
    Read More
  11. 게시판 기본 스킨 글쓰기 페이지 살펴보기 1 - write.skin.php

    Date2017.04.13 Views2551
    Read More
  12. 게시판 글쓰기 페이지에 스마트 에디터 2개 이상 사용하기

    Date2017.04.12 Views2778
    Read More
  13. 게시판 글쓰기 페이지에 다음 API 주소 입력기 사용하기

    Date2017.04.12 Views3729
    Read More
  14. 게시물 관리 기능을 업데이트

    Date2024.04.09 Views0
    Read More
  15. style 수정시 서버에서 로딩되게 하기

    Date2019.12.13 Views255
    Read More
  16. sql 바인딩 그누보드에서 해보기

    Date2024.04.09 Views0
    Read More
  17. NICE API 인증모듈

    Date2024.04.09 Views1
    Read More
  18. mysql concat 날짜와 시간을 문자열로 합치기 시간의 크기 비교

    Date2023.05.16 Views131
    Read More
  19. mov 업로드시 mp4 자동 변환

    Date2024.04.09 Views0
    Read More
  20. jQuery 요소(elements) 미디어 컨버팅 플러그인

    Date2019.12.13 Views320
    Read More
Board Pagination Prev 1 2 3 4 Next
/ 4

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved