[Flutter] Firebase App Check

2026-02-06 hit count image

이번 블로그 포스트에서는 Flutter에서 Firebase의 App check를 설정하는 방법에 대해서 알아보도록 하겠습니다.

개요

이번 블로그 포스트에서는 Flutter로 개발한 앱이 정품인지 검증하여, 검증되지 않은 클라이언트가 Firebase 백엔드 서비스(Firestore, Storage, Functions 등)에 접근하는 것을 방지하기 위해, FirebaseApp Check를 설정하는 방법에 대해서 알아보겠습니다.

블로그 시리즈

이 블로그는 시리즈로 제작되었습니다. 다음 링크를 통해 다른 블로그 포스트도 확인해 보시기 바랍니다.

Firebase 프로젝트 생성 및 설정

Flutter에서 Firebase를 사용하기 위해서는 Firebase 프로젝트를 생성하고, firebase_core 패키지를 설치할 필요가 있습니다. 아래의 링크를 통해 자세한 내용을 확인하시기 바랍니다.

firebase_app_check 설치

Flutter 프로젝트에서 Firebase App Check를 사용하기 위해서는 firebase_app_check 패키지를 설치할 필요가 있습니다. 다음 명령어를 실행하여 firebase_app_check 패키지를 설치합니다.

flutter pub add firebase_app_check

Flutter에서 App Check 활성화

firebase_app_check 패키지를 설치한 후, Flutter 앱에서 App Check를 활성화해야 합니다. main.dart 파일을 다음과 같이 수정합니다.

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  await FirebaseAppCheck.instance.activate(
    androidProvider: AndroidProvider.playIntegrity,
    appleProvider: AppleProvider.deviceCheck,
  );

  runApp(MyApp());
}

androidProvider에는 AndroidProvider.playIntegrity를 설정하여 Play Integrity를 사용하고, appleProvider에는 AppleProvider.deviceCheck를 설정하여 DeviceCheck를 사용합니다.

디버그 모드에서 App Check 사용

개발 중에는 실제 기기가 아닌 에뮬레이터나 시뮬레이터에서 테스트를 해야 할 때가 있습니다. 이 경우, 디버그 모드에서 App Check를 사용하기 위해 다음과 같이 설정할 수 있습니다.

await FirebaseAppCheck.instance.activate(
  androidProvider: kDebugMode ? AndroidProvider.debug : AndroidProvider.playIntegrity,
  appleProvider: kDebugMode ? AppleProvider.debug : AppleProvider.deviceCheck,
);

디버그 모드에서는 AndroidProvider.debugAppleProvider.debug를 사용하여 디버그 토큰을 생성합니다. 생성된 디버그 토큰은 콘솔에 출력되며, 이 토큰을 Firebase Console에 등록해야 합니다.

Firebase Console에서 App Check > Apps > 해당 앱의 메뉴 > Manage debug tokens를 선택하여 디버그 토큰을 등록할 수 있습니다.

안드로이드 설정

Google Cloud Platform 설정

Firebase App Check를 사용하기 위해서는 Google Cloud Platform에서 App Check을 활성화해야 합니다. 다음 링크를 통해 Google Cloud Console에 접속하고, App Check을 활성화합니다.

그런 다음 Play Integrity API를 검색합니다.

Flutter Firebase App Check - GCP, search Play Integrity API

그리고 검색 결과에서 Play Integrity API를 선택하고, Enable 버튼을 클릭합니다.

Flutter Firebase App Check - GCP, enable Play Integrity API

Google Play Console 설정

Play Integrity를 설정하기 위해서는 Google Play Console에서 Play Integrity API을 사용하도록 설정해야 합니다.

Google Cloud Platform 연결

우선 Google Play Console로 이동 한 후, Play Integrity를 설정하고자 하는 앱의 앱 무결성(App integrity) 메뉴로 이동합니다.

Flutter Firebase App Check - Google Play Console, Android App Integrity

하단에 있는 Cloud 프로젝트 연결(Link Cloud project)를 선택합니다. 그럼 다음과 같이 Google Cloud project를 선택하는 화면이 나타납니다.

Flutter Firebase App Check - Google Play Console, Android link google cloud project

이제 해당 앱의 Google Cloud project를 선택하고 적용(Apply) 버튼을 클릭하여 Google Cloud project를 선택합니다. Google Cloud 프로젝트가 연결되면 다음과 같은 화면을 확인할 수 있습니다.

Flutter Firebase App Check - Google Play Console, update goal

이제 이 화면에서 목표 업데이트(Update goal) 버튼을 클릭하여 Play Integrity를 통해 보호하고자 하는 동작을 설정합니다.

Flutter Firebase App Check - Android select the actions you want to prevent

자동 보호 설정

이제 자동 보호(Automatic protection)를 설정하여 앱을 보호할 필요가 있습니다.

Flutter Firebase App Check - Android turn on automatic protection

앱 무결성 페이지에 있는 자동 보호의 설정(Turn on) 버튼을 클릭합니다.

Flutter Firebase App Check - Android turn on installer check

이제 설치 프로그램 선택(Installer check)를 클릭하여 설정합니다. 그런 다음 오른쪽 하단의 저장(Save) 버튼을 클릭하여 설정을 저장합니다.

스토어 등록정보 표시

스토어 등록정보 표시(Store listing visibility)를 설정하여 앱을 보호할 수 있습니다.

Flutter Firebase App Check - Android turn on store listing visibility

앱 무결성 페이지에 있는 스토어 등록정보 표시의 설정(Turn on) 버튼을 클릭합니다.

Flutter Firebase App Check - Android select device integrity checks

그런 다음, 기기 무결성 검사(Device integrity checks)를 선택한 후, 오른쪽 하단의 저장(Save) 버튼을 클릭하여 설정을 저장합니다.

앱 서명 키 복사

Firebase App Check를 사용하기 위해서는 Google Play Console에서 사용하는 앱 서명(Play app signing) 키를 복사하여 Firebase Console에 등록해야 합니다.

Play 앱 서명(Play app signing) 항목의 설정(Settings)을 클릭하여, 앱 서명(App signing) 페이지로 이동합니다.

Flutter Firebase App Check - Play app signing

앱 서명 페이지에서 앱 서명 키 인증서(App signing key certificate)SHA-256 인증서 지문(SHA-256 certificate fingerprint)를 복사합니다. 이는 나중에 Firebase Console에 등록할 때 사용됩니다.

Flutter Firebase App Check - App signing key certificate

그런 다음, 하단에 있는 업로드 키 인증서(Upload key certificate)SHA-256 인증서 지문(SHA-256 certificate fingerprint)도 복사합니다. 이는 나중에 Firebase Console에 등록할 때 사용됩니다.

Flutter Firebase App Check - Upload key certificate

iOS 설정

Firebase App Check를 사용하기 위해서는 Key IDTeam ID를 설정해야 합니다. Firebase App Check에서 사용할 Key를 생성하고 Team ID를 확인하기 위해 Apple Developer에 접속합니다.

Apple Developer에 접속한 후, 계정(Account) > Certificates, Identifiers & Profiles > Keys로 이동합니다.

Flutter Firebase App Check - Apple Developer Certificates, Identifiers & Profiles

Keys 옆에 있는 + 버튼을 클릭하여 새로운 Key를 생성합니다.

Flutter Firebase App Check - Apple Developer Add Key

Key name를 입력하고 DeviceCheck를 체크한 후, Continue 버튼을 클릭하여, Key를 생성합니다.

Flutter Firebase App Check - Apple Developer Create Key

Key nameDeviceCheck가 체크된 상태에서 Register 버튼을 클릭하여 Key를 생성합니다.

Flutter Firebase App Check - Apple Developer Download Key and Copy Key ID

마지막으로, Apple Developer 페이지 상단에 있는 Team ID를 복사합니다.

Flutter Firebase App Check - Apple Developer Team ID

여기서 다운로드한, Key 파일과 Key ID, Team ID를 Firebase Console에 등록할 예정입니다.

Firebase 설정

안드로이드와 iOS 설정이 완료되었으면, 이제 Firebase Console에서 Firebase App Check를 설정합니다. Firebase Console로 이동한 후, App Check를 설정하고자 하는 앱의 App Check를 선택합니다.

Flutter Firebase App Check - Firebase app check

Get started 버튼을 클릭하여, App Check 설정을 시작합니다.

Flutter Firebase App Check - Get started

상단의 Apps 탭을 선택하고, 리스트에 표시된 안드로이드의 오른쪽에 있는 메뉴 아이콘을 선택하여 Show details를 클릭합니다.

Flutter Firebase App Check - Show details

그런 다음, Play Integrity를 선택하고, SHA-256 certificate fingerprint에 앞서 복사한 앱 서명 키 인증서(SHA-256 certificate fingerprint)를 붙여넣습니다.

Flutter Firebase App Check - Android SHA-256 certificate fingerprint

그런 다음 Add another fingerprint를 클린한 후, 앞서 복사한 업로드 키 인증서(SHA-256 certificate fingerprint)를 붙여넣습니다.

Flutter Firebase App Check - Android Add another fingerprint

마지막으로 Save 버튼을 클릭하여 설정을 저장합니다.

iOS 설정

이제 iOS 앱에 대한 App Check를 설정합니다. 리스트에 표시된 iOS 앱의 오른쪽에 있는 메뉴 아이콘을 선택하여 Show details를 클릭합니다.

그런 다음, DeviceCheck를 선택하고, 앞서 Apple Developer에서 다운로드한 Key 파일을 업로드합니다. 그리고 Key IDTeam ID를 입력한 후 Save 버튼을 클릭하여 설정을 저장합니다.

App Check 적용

App Check 설정이 완료되면, Firebase 백엔드 서비스에 App Check를 적용할 수 있습니다. App Check 페이지에서 APIs 탭을 선택하면, Firebase 백엔드 서비스 목록을 확인할 수 있습니다.

각 서비스 옆에 있는 Enforce 버튼을 클릭하여 App Check를 적용할 수 있습니다. 단, App Check를 적용하면 검증되지 않은 클라이언트는 해당 서비스에 접근할 수 없게 되므로, 모든 클라이언트가 App Check를 활성화한 후에 적용하는 것이 좋습니다.

완료

이것으로 Flutter에서 Firebase App Check를 사용하기 위해 Flutter 프로젝트에 firebase_app_check를 설정하는 방법에 대해서 알아보았습니다. Firebase App Check를 사용하면 검증되지 않은 클라이언트가 Firebase 백엔드 서비스에 접근하는 것을 방지할 수 있으므로, 앱의 보안을 강화할 수 있습니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts