메뉴 건너뛰기

2024.04.09 13:26

NICE API 인증모듈

조회 수 50 추천 수 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. mov 업로드시 mp4 자동 변환

    Date2024.04.09 Views145
    Read More
  2. 유튜브 동영상 시간체크 후 폼 전송하기

    Date2024.04.09 Views41
    Read More
  3. input에 datepicker 달력 날짜 넣기

    Date2024.04.09 Views45
    Read More
  4. NICE API 인증모듈

    Date2024.04.09 Views50
    Read More
  5. 약간간단 주소복사 버튼

    Date2024.04.09 Views34
    Read More
  6. input 에 숫자 입력시 3자리 콤마 자동

    Date2024.04.09 Views40
    Read More
  7. 특정국가 차단하기

    Date2024.04.09 Views44
    Read More
  8. 회원가입 약관동의 전체동의 보완

    Date2024.04.09 Views27
    Read More
  9. 하나의 게시판에 여러 스킨을 적용해 보자

    Date2024.04.09 Views36
    Read More
  10. 접속주소가 https로 되여 있는지 판단하여 $g5_path['url']를 수정하기

    Date2024.04.09 Views51
    Read More
  11. 여분필드 확장 후 write_update.skin.php

    Date2024.04.09 Views58
    Read More
  12. 외부 유입 검색어 나리야 사용가능 [뿡쁑님 자료]

    Date2024.04.09 Views45
    Read More
  13. 비회원은 ? 시간 동안 댓글을 볼 수 없게 해보자!

    Date2024.04.09 Views45
    Read More
  14. 웹상에서 PDF 뷰어 소스 (copyright 2021 Mozilla)

    Date2024.04.09 Views49
    Read More
  15. admin 비밀번호 생각이 안 날때, 비번 바꾸는 간단한 소스 (SHA256 용)

    Date2024.04.09 Views47
    Read More
  16. common.php 를 졸라 쉽게 인클루드 하기

    Date2024.04.09 Views36
    Read More
  17. 스마트에디터2 글쓰기시 큰이미지를 자동으로 리사이징하기

    Date2024.04.09 Views50
    Read More
  18. 댓글을 잠글 수 있는 기능을 추가 해보자!!!

    Date2024.04.09 Views43
    Read More
  19. 안쓰는 DHTML 에디터 이미지와 빈폴더 일괄삭제

    Date2024.04.09 Views37
    Read More
  20. "웹에서" 검색 추가하기

    Date2024.04.09 Views42
    Read More
Board Pagination Prev 1 2 3 4 Next
/ 4

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved