iES 생체인증 해지

  1. 인증 요청 및 핀패드 오픈
  2. 푸시 수신 대기
  3. 푸시 수신후 암복호화 과정 진행
  4. 패스워드 입력
  5. 생체인증 해지 진행
  6. 인증성공여부 확인

iES 생체인증에 대해 설명합니다.
iES 생체인증 해지는 기본적으로 인증 과정과 동일 합니다.

생체인증 설정

샘플 앱에 포함된 MainActivity.java의 reqPush 메소드를 참고해 주세요

    private void reqPush(final String used_type, String signData) {
        String cus_id = mEtCusId.getText().toString();
        //String cert_no = mEtCertNo.getText().toString();
        String add_cus_id = mEtAddCusId.getText().toString();

        SPinManager.getInstance().reqPush(this, used_type, cus_id,  add_cus_id, signData);
    }

signData 패러미터는 전자서명시 추가되는 값입니다. 전자서명에 추가할 내용을 문자열 형태로 추가하해 주세요 used_type 패러미터는 사용타입 입니다. 생체인증을 설정 하기위해 used_type을 10 로 전달합니다.

사용타입 코드
로그인 2
비밀번호변경 4
해지 5
푸시토큰 업데이트 6
생체인증 가입 8
생체인증 9
생체인증해지 10
public void reqPush(final Context ctx, final String used_type, final String cus_id, final String add_cus_id, final String signData) {
        OneShotPadListener<DataResponse> l = new OneShotPadListener<DataResponse>() {
            @Override
            public void onResult(DataResponse res) {
                BaseResponse.printLog(res);
                showToast(ctx, res);
                // 결과 값 반환
                if (res.code.equals(BaseResponse.CD_OK)) {
                    startPushTimeout(ctx, cus_id); // 푸시 타임아웃 시작
                    if (used_type == OneShotPadManager.USED_TYPE_BIO_AUTH) {
                        showBioAuthPinpadDialog(ctx, add_cus_id, cus_id, signData);
                    } else {
                        showAuthPinpadDialog(ctx, add_cus_id, cus_id, signData);
                    }
                } else if (res.code.equals(BaseResponse.CD_PUSH_TOKEN)) {
                    initGcm(ctx, true);
                }
            }
        };
        OneShotPadManager.getInstance().reqPushEx(ctx, used_type, cus_id, add_cus_id, l);
    }

이제 SPinManager의 reqPush메소드는 푸시를 요청하고 핀패드를 출력하고 푸시 수신대기를 합니다.

비밀번호 변경

인증 확인

푸시가 수신되고 핀패드의 입력이 끝났다면, SPinManager의 reqAuthPinPad 메소드로 인증을 완료 합니다.

private void reqAuthBio(final Context ctx, String pwd, String add_cus_id, final String cus_id, final String signData) {
        OneShotPadListener<DataResponse> l = new OneShotPadListener<DataResponse>() {
            @Override
            public void onResult(final DataResponse res) {
                BaseResponse.printLog(res);
                showToast(ctx, res);
                if (res.code.equals(BaseResponse.CD_OK)) {
                    if (!OneShotPadManager.USED_TYPE_CLOSE.equals(mPushInfo.used_type)) { // 해지 요청이 아닌 경우
                        if (true/*certSign(res.cert, res.cert_pwd)*/) { // Sign..
                            Log.d(TAG, "Sign 성공!!");

                            //전자 서명 검증
                            //전자 서명 값이 있다면 검증 요청


                            if (res.sign != null) {
                                //SpEncKey.getInstance(this).reqSpEncKey
                                SpVerifyListener<SpVerifyResponse> l = new SpVerifyListener<SpVerifyResponse>() {
                                    @Override
                                    public void onResult(SpVerifyResponse sres) {
                                        if (sres.resultData.getCode().equals(BaseResponse.CD_OK)) {
                                            //검증 성공
                                            Toast.makeText(ctx, "검증 성공", Toast.LENGTH_LONG).show();
                                            // 비밀번호 변경
                                            if (OneShotPadManager.USED_TYPE_CHANGE_PWD.equals(mPushInfo.used_type)) { // 비밀번호 변경
                                                try {
                                                    showChangePwdPinpadDialog(ctx, cus_id, mPushInfo, res.sign, res.sign_text);
                                                } catch (Exception e) {
                                                    e.printStackTrace();
                                                }
                                            } else {

                                            }
                                        }

                                        mPushInfo = null;
                                        mTempPwd = null;
                                        mTempAddCusId = null;
                                        mSignData = null;
                                        mCus_id = null;
                                    }
                                };
                                SpVerify.getInstance(ctx).reqVerify("", res.cus_id, res.sign, res.sign_text, mPushInfo.auth_token, l);
                            } else {
                                // 서명값 리턴이 없어도 비밀번호 변경 로직은 유지
                                if (OneShotPadManager.USED_TYPE_CHANGE_PWD.equals(mPushInfo.used_type)) { // 비밀번호 변경
                                    try {
                                        showChangePwdPinpadDialog(ctx, cus_id, mPushInfo, res.sign, res.sign_text);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                } else {

                                }


                                mPushInfo = null;
                                mTempPwd = null;
                                mTempAddCusId = null;
                                mSignData = null;
                                mCus_id = null;
                            }
                        } else {
                            Log.e(TAG, "Sign 실패..");
                        }
                    }
                }

            }
        };
        if (mPushInfo == null) { // 푸시가 아직 도착하지 않음
            /* 2016.12.06 cjw mIsPushTimeout 추가
             * 기존에는 인증 핀패드가 떠서 바로 인증 시도를 하지않고,
             * 푸시 타임아웃 시간 [20초] 이 지난 후에
             * 인증을 시도하게 되면, 무한 프로그레스 다이얼로그가 발생한다..
             * 이를 방지하기 위해 타임아웃 Flag 를 추가함.
             */
            if (mIsPushTimeout) { // 푸시 타임아웃이 종료되기 전..
                showPushProgressDialog(ctx, pwd, add_cus_id, cus_id, signData);
            } else {
                Toast.makeText(ctx, "간편인증 응답 실패.", Toast.LENGTH_SHORT).show();
            }
        } else {
            OneShotPadManager.getInstance().reqAuthBioPadEx(ctx, pwd, mPushInfo, add_cus_id, cus_id, signData, l);
        }
    }
이전
다음