iES 생체인증 설정

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

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

생체인증 설정

샘플 앱에 포함된 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을 8 로 전달합니다.

사용타입 코드
로그인 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 reqAuthPinPad(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 (OneShotPadManager.USED_TYPE_CHANGE_PWD.equals(mPushInfo.used_type)) { // 비밀번호 변경
                                try {
                                    showChangePwdPinpadDialog(ctx, new String(res.cert_pwd.getData()), cus_id, mPushInfo, res.sign, res.sign_text);
                                } catch (KSException e) {
                                    e.printStackTrace();
                                }
                            } else {
                                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, new String(res.cert_pwd.getData()), cus_id, mPushInfo, res.sign, res.sign_text);
                                                } catch (KSException 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 {
                            Log.e(TAG, "Sign 실패..");
                        }
                    }
                }

            }
        };
        if (mPushInfo == null) { // 푸시가 아직 도착하지 않음
            if (mIsPushTimeout) { // 푸시 타임아웃이 종료되기 전..
                showPushProgressDialog(ctx, pwd, add_cus_id, cus_id, signData);
            } else {
                Toast.makeText(ctx, "간편인증 응답 실패.", Toast.LENGTH_SHORT).show();
            }
        } else {
            OneShotPadManager.getInstance().reqAuthPinPadEx(ctx, pwd, mPushInfo, add_cus_id, cus_id, signData, l);
        }
    }

인증이 완료되면 라이브러리에서 사용자의 생체인증을 확인하는 팝업창이 출력 됩니다.
사용자의 생체인증이 완료 되면, 생체인증 설정이 완료 됩니다.

이전
다음