핀수로그
  • [android] reCAPTCHA 사용하기 : Invalid Dynamic Link - Blocked 이슈
    2022년 06월 13일 22시 35분 06초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형

    🛠 나는 어쩌다 삽질을 하게 되었나

    보안 관련 기능 추가를 위한 논의 끝에
    reCAPTCHA 를 검토해보자는 말이 나왔다.
    모르는 것을 처음할 때는 모름지기 공식문서가 최고라는 믿음으로
    android reCAPTCHA 를 검색해 안드로이드 공식문서로 들어갔다.

    reCAPTCHA

    로그인 몇번 실패하면 로봇이 아님을 밝히라며
    우리에게 수많은 신호등과..자전거를 고르게 했던 바로 그친구!

    reCAPTCHA는 스팸 및 남용으로부터 사이트를 보호하는 무료 서비스입니다.
    고급 위험 분석 기술을 사용하여 인간과 봇을 구분합니다.

     

    동작 방식

    1. reCAPTCHA 사이트에서 사이트 키와 비밀 키를 발급 받는다. (사이트 키는 클라이언트 쪽에서 사용되고 비밀키는 서버에 있어야한다.)
    2. 사이트 키를 사용해 reCAPTCHA가 생성되고 필요한 경우 reCAPTCHA 가 지시하는 것을 수행해야한다.
    3. reCAPTCHA 쪽에서 통신 후 사이트 키를 사용해 사용자 응답 토큰을 반환한다.
    4. 클라이언트는 응답으로 받은 토큰을 서버로 보내고, 서버는 해당 토큰을 비밀키와 함께 reCAPTCHA 로 보낸다.
    5. reCAPTCHA 는 상태를 서버로 보내고 서버는 그 상태를 클라이언트로 보낸다.

     


    사이트로 들어가라고 하니까...
    눌렀는데

    놀라는 마음을 붙잡고 구글링해봤는데
    네에..? firebase 동적 링크요...?
    reCAPTCHA 하나 연결하는데...이렇게 까지 해야하는 걸까요?

    다시 경건한 마음으로 구글링을 하다가
    구글 클라우드와 통합하라는 글을 보았고...
    열심히 따라했는데요......

    🛠 삽질 기록

    더보기

     

    Android 앱에 reCAPTCHA Enterprise 통합

     

    Android 앱에 reCAPTCHA Enterprise 통합  |  Google Cloud

    의견 보내기 Android 앱에 reCAPTCHA Enterprise 통합 미리보기 이 기능에는 Google Cloud 서비스 약관의 GA 출시 전 제공 서비스 약관이 적용됩니다. GA 이전 기능은 지원이 제한될 수 있으며, GA 이전 기능 변

    cloud.google.com

    - 사용 중인 google cloud project 를 연결한다.

     

    환경 및 기능 요구사항에 따라 reCAPTCHA Enterprise 설정하기

     

     

    API 키를 사용하여 google cloud 이외의 환경에서 reCAPTCHA Enterprise 설정

    - 프로젝트 선택기로 이동

    - reCAPTCHA API 사용

    - 사용자 인증 정보로 이동

    - API key 생성 (서비스 계정)

     

     

    사용할 reCAPTCHA 키 유형 결정 및 reCAPTCHA 키 만들기

    - 적절한 reCAPTCHA 키 유형 선택

     

    적절한 reCAPTCHA 키 유형 선택  |  reCAPTCHA Enterprise  |  Google Cloud

    의견 보내기 적절한 reCAPTCHA 키 유형 선택 reCAPTCHA 키(사이트 키라고도 함)를 사용하면 웹페이지와 모바일 애플리케이션에서 사용자 상호작용을 확인하여 엔드포인트를 보호할 수 있습니다. 적절

    cloud.google.com

     

    - key 만들기

    cloud console 에서 reCAPTCHA Enterprise 검색

    영업팀 문의로 끝난...
    말도 안된다..하면서 firebase 에 프로젝트 연결도 다했는데
    도저히 해결의 실마리가 안보였던 거죠

    예제도 너무 없고!!!!!!!!!
    그러다 찾았습니다 여기서

    공식 문서의 링크는 잘못됐다

     

    reCAPTCHA 키 쌍 등록하기

    를 위해서는 이 사이트로 들어가야한다.


    각각의 알맞은 입력값을 넣어주고 나면
    사이트 키와 비밀 키가 주어진다.

    프로젝트에 적용하기

    종속성 추가

    앱 수준의 gradle

        apply plugin: 'com.android.application'
        ...
        dependencies {
            implementation 'com.google.android.gms:play-services-safetynet:17.0.0'
        }

     

    적용하기

    private final View.OnClickListener listener = view -> SafetyNet.getClient(mContext)
                .verifyWithRecaptcha("SITE_KEY")
                .addOnSuccessListener(
                        response -> {
                            // Indicates communication with reCAPTCHA service was
                            // successful.
                            String userResponseToken = response.getTokenResult();
                            assert userResponseToken != null;
                            if (!userResponseToken.isEmpty()) {
                                // Validate the user response token using the
                                // reCAPTCHA siteverify API.
                                Log.d(TAG, "onSuccess: "+ userResponseToken);
                            }
                        })
                .addOnFailureListener(e -> {
                    if (e instanceof ApiException) {
                        // An error occurred when communicating with the
                        // reCAPTCHA service. Refer to the status code to
                        // handle the error appropriately.
                        ApiException apiException = (ApiException) e;
                        int statusCode = apiException.getStatusCode();
                        Log.d(TAG, "Error: " + CommonStatusCodes
                                .getStatusCodeString(statusCode));
                    } else {
                        // A different, unknown type of error occurred.
                        Log.d(TAG, "Error: " + e.getMessage());
                    }
                });

    추가적인 로직 작성은 공식 문서해당 문서를 참고하려고 한다.
    기본 틀이 이렇다는 걸 알아두면 좋을 것 같다.


    그냥...reCAPTCHA 공식문서 들어갔으면 한큐에 끝났을까요...?
    암턴....안드로이드 공식문서에 나온 주소로 들어가면..안나온다는거..

    728x90
    반응형
    댓글