Flutter 앱에서 reCAPTCHA Enterprise로 앱 체크 사용 시작하기

플랫폼 선택: iOS+ Android Flutter


이 페이지에서는 Flutter 앱에서 App Check을(를) 설정하는 방법을 보여줍니다. reCAPTCHA Enterprise 제공자를 사용합니다. App Check를 사용하면 앱만 프로젝트의 백엔드 리소스에 액세스할 수 있습니다. 자세한 내용은 개요App Check를 검1하세요.

App Check를 사용하려면 사용자에게 표시되지 않는 점수 기반 reCAPTCHA 키를 사용해야 합니다. 즉, reCAPTCHA Enterprise 제공자는 사용자에게 테스트 해결을 요구하지 않습니다.

사용 사례에 reCAPTCHA Enterprise 기능이 필요하지만 App Check로 구현되지 않은 경우 또는 자체 커스텀 제공자와 함께 App Check를 사용하려면 커스텀 App Check 제공자 구현을 참조하세요.

1. Firebase 프로젝트 설정

  1. Flutter 프로젝트에 아직 Firebase를 설치하고 초기화하지 않은 경우 Firebase를 설치하고 초기화합니다.

  2. Google Cloud 콘솔에서 Fraud Defense 페이지로 이동하여 reCAPTCHA Enterprise 프로바이더에 대해 다음을 실행합니다.

    1. 올바른 프로젝트에 있는지 확인합니다 (화면 상단의 프로젝트 선택 도구 참고).

    2. 메시지가 표시되면 reCAPTCHA Enterprise API를 사용 설정합니다.

    3. 타겟 플랫폼을 기반으로 키를 만듭니다.

      iOS+

      iOS 유형 키를 만들고 앱의 번들 ID (예: com.example.my_app)를 지정합니다.

      • Firebase 프로젝트에서 Firebase Apple 앱을 만들 때 제공한 것과 동일한 번들 ID를 입력해야 합니다. 번들 ID 값은 대소문자를 구분합니다.

      • App Check의 경우 각 번들 ID는 하나의 단일 reCAPTCHA 키에만 해당할 수 있습니다.

      Android

      Android 유형 키를 만들고 앱의 패키지 이름 (예: com.example.my_app)을 지정합니다.

      • Firebase 프로젝트에서 Firebase Android 앱을 만들 때 제공한 것과 동일한 패키지 이름을 입력해야 합니다. 패키지 이름 값은 대소문자를 구분합니다.

      • App Check의 경우 각 패키지 이름은 하나의 단일 reCAPTCHA 키에만 해당할 수 있습니다.

      유형 키를 만들고 웹 앱의 각 도메인 을 지정합니다.

      • App Check지원하지않습니다.

      • 프로덕션에 배포된 (또는 배포될) reCAPTCHA 키에 localhost를 도메인으로 추가하지 마세요.

      • '체크박스 테스트 사용' 옵션을 선택 해제 한 상태로 둡니다.

      자세한 안내는 점수 기반 reCAPTCHA 만들기를 참조하세요.

    4. 각 키를 기록해 둡니다. Firebase Firebase 콘솔의 등록 흐름에 추가해야 합니다.

  3. Firebase 콘솔에서 보안 > 앱 체크로 이동합니다.

  4. 탭에서 각 타겟 플랫폼 앱을 등록하여 App CheckreCAPTCHA Enterprise 제공자와 함께 사용합니다. Google Cloud 콘솔에서 가져온 키를 제공해야 합니다.

  5. 선택사항: 토큰 TTL (수명)을 설정합니다.

    앱 등록 설정에서 제공자가 발급한 App Check 토큰의 커스텀 TTL (수명)을 설정합니다. TTL을 30분에서 7일 사이의 값으로 설정할 수 있습니다. 이 값을 변경할 때는 다음 장단점을 고려하세요.

    • 보안: TTL이 짧을수록 유출되거나 가로채인 토큰이 공격자에 의해 악용될 수 있는 기간이 줄어들므로 보안이 강화됩니다.
    • 성능: TTL이 짧을수록 앱에서 증명을 더 자주 수행합니다. 앱 증명 프로세스는 실행될 때마다 네트워크 요청에 지연 시간이 추가되므로 짧은 TTL은 앱 성능에 영향을 줄 수 있습니다.
    • 할당량 및 비용: 더 짧은 TTL과 빈번한 재증명으로 인해 할당량이 더 빨리 소진되며, 유료 서비스의 경우 더 많은 비용이 발생할 수 있습니다. 할당량 및 한도를 참조하세요.

    대부분의 앱에 기본 TTL인 1시간이 적합합니다. App Check 라이브러리는 TTL 기간의 약 절반이 지났을 때 토큰을 새로고침합니다.

  6. 선택사항: 고급 설정을 구성합니다.

  7. 저장 을 클릭합니다.

고급 설정 구성(선택사항)

사용자가 앱을 열면 reCAPTCHA Enterprise는 키에 따른 사용자 상호작용의 위험도를 평가하고 0.1씩 증가하는 0.0~1.0 사이의 점수를 반환합니다.

  • 점수 0.0은 상호작용 위험이 높고 허위일 가능성이 있음을 나타냅니다.
  • 점수 1.0은 상호작용 위험이 낮고 적합할 가능성이 매우 높다는 것을 나타냅니다.

App Check 앱 체크를 사용하면 앱 위험 기준점 을 구성하여 이 위험에 대한 허용 범위를 조정할 수 있습니다.

대부분의 사용 사례에서는 기본 기준값인 0.5 를 사용하는 것이 좋습니다. 사용 사례에 조정이 필요한 경우 Firebase 콘솔에서 각 앱의 이 값을 구성할 수 있습니다 (보안 > 앱 확인 로 이동). 아래에서 앱 위험 기준점 구성에 관한 몇 가지 중요한 고려사항을 펼쳐서 검토하세요.

2. 앱에 App Check 플러그인 추가

reCAPTCHA Enterprise 제공자를 사용하려면 해당하는 App Check 플러그인을 추가해야 합니다.

  1. Flutter 프로젝트의 루트에서 다음 명령어를 실행하여 플러그인을 설치합니다.

    flutter pub add firebase_app_check
    
  2. 완료되면 Flutter 프로젝트를 다시 빌드합니다.

    flutter run
    

3. App Check 초기화

앱에서 다른 Firebase 서비스를 사용하기 전에 App Check를 초기화해야 합니다.

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_app_check/firebase_app_check.dart';
import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  await FirebaseAppCheck.instance.activate(
    providerWeb: ReCaptchaEnterpriseProvider(WEB_SITE_KEY),
    providerAndroid: const AndroidReCaptchaProvider(ANDROID_SITE_KEY),
    providerApple: const AppleReCaptchaProvider(IOS_SITE_KEY),
  );
  runApp(App());
}

4. 측정항목 모니터링 및 적용 사용 설정

앱에서 App Check을 설정한 후 업데이트된 앱을 사용자에게 배포하기 시작합니다.

업데이트된 클라이언트 앱이 Firebase에 전송하는 모든 요청과 함께 App Check 토큰을 보내기 시작합니다. 하지만 App Check은(는) 잘못된 토큰이 있는 요청을 App Check이(가) 적용될 때까지 차단하지 않습니다.

측정항목 모니터링

_**적용을 사용 설정하기 전에**_ 이렇게 해도 기존의 적법한 사용자에게 불편을 야기하지 않는지 확인해야 합니다. 반면에 앱 리소스 사용이 의심스러워 보이면 적용을 더 빠르게 사용 설정하는 것이 좋습니다.

사용 중인 서비스의 App Check 측정항목을 검토하면 적용 여부에 대한 판단을 내리는 데 도움이 됩니다.

시정 조치 App Check사용 설정

App Check가 사용자에게 미치는 영향을 이해하고 계속 진행할 준비가 되면 App Check 적용을 사용 설정할 수 있습니다.

디버그 환경에서 App Check 사용

App Check는 개발 중 에뮬레이터 / 시뮬레이터 또는 localhost의 요청이나 지속적 통합 (CI) 환경의 요청과 같은 일부 환경을 잘못된 것으로 분류합니다.

App Check가 적용된 후 이러한 유형의 환경에서 앱을 실행하려면 프로덕션 증명 제공자 대신 App Check 디버그 제공자를 사용하는 앱의 디버그 빌드를 만들어야 합니다.

자세한 내용은 App Check Flutter 앱에서 디버그 제공자와 함께 사용을 참조하세요.

가격 책정

App Check는 앱이 App Check 토큰을 새로고침할 때마다 사용자의 응답 토큰의 유효성을 검증하는 평가를 대신 만듭니다. 무료 할당량을 초과하여 생성된 각 평가에 대한 요금이 Firebase 프로젝트에 청구됩니다. 자세한 내용은 reCAPTCHA 가격 책정을 참조하세요.

기본적으로 앱은 1시간 마다 토큰을 두 번 새로고침합니다. 앱이 App Check 토큰을 새로고침하는 빈도 (및 새로운 평가가 생성되는 빈도)를 제어하려면 토큰 TTL을 구성하면 됩니다.