목차
개요
이번 블로그 포스트에서는 Flutter로 개발한 앱이 정품인지 검증하여, 검증되지 않은 클라이언트가 Firebase 백엔드 서비스(Firestore, Storage, Functions 등)에 접근하는 것을 방지하기 위해, Firebase의 App Check를 설정하는 방법에 대해서 알아보겠습니다.
블로그 시리즈
이 블로그는 시리즈로 제작되었습니다. 다음 링크를 통해 다른 블로그 포스트도 확인해 보시기 바랍니다.
- [Flutter] Firebase Core
- [Flutter] Firebase Analytics
- [Flutter] Firebase Crashlytics
- [Flutter] Firebase App Check
- [Flutter] Firebase Performance
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.debug와 AppleProvider.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를 검색합니다.

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

Google Play Console 설정
Play Integrity를 설정하기 위해서는 Google Play Console에서 Play Integrity API을 사용하도록 설정해야 합니다.
Google Cloud Platform 연결
우선 Google Play Console로 이동 한 후, Play Integrity를 설정하고자 하는 앱의 앱 무결성(App integrity) 메뉴로 이동합니다.

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

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

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

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

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

이제 설치 프로그램 선택(Installer check)를 클릭하여 설정합니다. 그런 다음 오른쪽 하단의 저장(Save) 버튼을 클릭하여 설정을 저장합니다.
스토어 등록정보 표시
스토어 등록정보 표시(Store listing visibility)를 설정하여 앱을 보호할 수 있습니다.

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

그런 다음, 기기 무결성 검사(Device integrity checks)를 선택한 후, 오른쪽 하단의 저장(Save) 버튼을 클릭하여 설정을 저장합니다.
앱 서명 키 복사
Firebase App Check를 사용하기 위해서는 Google Play Console에서 사용하는 앱 서명(Play app signing) 키를 복사하여 Firebase Console에 등록해야 합니다.
Play 앱 서명(Play app signing) 항목의 설정(Settings)을 클릭하여, 앱 서명(App signing) 페이지로 이동합니다.

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

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

iOS 설정
Firebase App Check를 사용하기 위해서는 Key ID와 Team ID를 설정해야 합니다. Firebase App Check에서 사용할 Key를 생성하고 Team ID를 확인하기 위해 Apple Developer에 접속합니다.
- Apple Developer: https://developer.apple.com/
Apple Developer에 접속한 후, 계정(Account) > Certificates, Identifiers & Profiles > Keys로 이동합니다.

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

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

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

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

여기서 다운로드한, Key 파일과 Key ID, Team ID를 Firebase Console에 등록할 예정입니다.
Firebase 설정
안드로이드와 iOS 설정이 완료되었으면, 이제 Firebase Console에서 Firebase App Check를 설정합니다. Firebase Console로 이동한 후, App Check를 설정하고자 하는 앱의 App Check를 선택합니다.

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

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

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

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

마지막으로 Save 버튼을 클릭하여 설정을 저장합니다.
iOS 설정
이제 iOS 앱에 대한 App Check를 설정합니다. 리스트에 표시된 iOS 앱의 오른쪽에 있는 메뉴 아이콘을 선택하여 Show details를 클릭합니다.
그런 다음, DeviceCheck를 선택하고, 앞서 Apple Developer에서 다운로드한 Key 파일을 업로드합니다. 그리고 Key ID와 Team 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 백엔드 서비스에 접근하는 것을 방지할 수 있으므로, 앱의 보안을 강화할 수 있습니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku가 개발한 앱을 한번 사용해보세요.Deku가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.














![[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통](https://img1c.coupangcdn.com/image/affiliate/banner/7cba8cb0601eebaf88a17a0c3cf65a63@2x.jpg)