Setelah memahami pengaruh App Check terhadap pengguna dan siap melanjutkan, Anda dapat mengaktifkan penerapan App Check.
Mengaktifkan penerapan
Untuk mulai menerapkan persyaratan token App Check di Cloud Functions callable, ubah fungsi Anda untuk memeriksa token App Check yang valid, seperti yang ditunjukkan di bawah. Setelah Anda mengaktifkan penerapan, semua permintaan yang belum diverifikasi akan ditolak.
Instal Cloud Functions SDK.
Node.js (generasi ke-1)
Update dependensi
firebase-functions
project Anda ke versi 4.0.0 atau yang lebih baru:npm install firebase-functions@">=4.0.0"
Node.js (generasi ke-2)
Update dependensi
firebase-functions
project Anda ke versi 4.0.0 atau yang lebih baru:npm install firebase-functions@">=4.0.0"
Python (pratinjau)
Tambahkan
firebase-functions
kefunctions/requirements.txt
:firebase-functions >= 0.1.0
Kemudian, update dependensi di lingkungan virtual project Anda:
./venv/bin/pip install -r requirements.txt
Aktifkan opsi runtime penerapan App Check untuk fungsi Anda:
Node.js (generasi ke-1)
const functions = require("firebase-functions/v1"); exports.yourV1CallableFunction = functions .runWith({ enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens. }) .https.onCall((data, context) => { // context.app contains data from App Check, including the app ID. // Your function logic follows. ... });
Node.js (generasi ke-2)
const { onCall } = require("firebase-functions/v2/https"); exports.yourV2CallableFunction = onCall( { enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens. }, (request) => { // request.app contains data from App Check, including the app ID. // Your function logic follows. ... } );
Python (pratinjau)
from firebase_functions import https_fn @https_fn.on_call( enforce_app_check=True # Reject requests with missing or invalid App Check tokens. ) def your_callable_function(req: https_fn.CallableRequest) -> https_fn.Response: # req.app contains data from App Check, including the app ID. # Your function logic follows. ...
Deploy ulang fungsi Anda:
firebase deploy --only functions
Setelah perubahan ini di-deploy, Cloud Functions callable Anda akan mewajibkan token App Check yang valid. SDK klien Cloud Functions secara otomatis melampirkan token App Check saat Anda memanggil fungsi callable.
Perlindungan replay (beta)
Untuk melindungi fungsi callable dari replay secara masif, Anda dapat menggunakan token App Check setelah memverifikasinya. Setelah token digunakan, token tersebut tidak dapat digunakan lagi.
Perlu diperhatikan bahwa penggunaan perlindungan replay akan menambahkan perjalanan dua arah jaringan ke verifikasi token, sehingga menambahkan latensi ke panggilan cloud function. Karena alasan ini, sebagian besar aplikasi biasanya mengaktifkan perlindungan replay hanya di endpoint yang sangat sensitif.
Untuk menggunakan token:
Di Cloud Console, berikan peran "Firebase App Check Token Verifier" ke akun layanan yang digunakan oleh Cloud Function.
- Jika Anda menginisialisasi Admin SDK secara eksplisit dan menentukan kredensial akun layanan Admin SDK project Anda, peran yang diperlukan telah diberikan.
- Jika Anda menggunakan Cloud Functions generasi ke-1 dengan konfigurasi Admin SDK default, berikan peran ke akun layanan default App Engine. Lihat Mengubah izin akun layanan.
- Jika Anda menggunakan Cloud Functions generasi ke-2 dengan konfigurasi Admin SDK default, berikan peran ke Akun layanan komputasi default.
Tetapkan
consumeAppCheckToken
ketrue
dalam definisi fungsi Anda:Node.js (generasi ke-1)
const functions = require("firebase-functions/v1"); exports.yourV1CallableFunction = functions .runWith({ enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens. consumeAppCheckToken: true // Consume the token after verification. }) .https.onCall((data, context) => { // context.app contains data from App Check, including the app ID. // Your function logic follows. ... });
Node.js (generasi ke-2)
const { onCall } = require("firebase-functions/v2/https"); exports.yourV2CallableFunction = onCall( { enforceAppCheck: true, // Reject requests with missing or invalid App Check tokens. consumeAppCheckToken: true // Consume the token after verification. }, (request) => { // request.app contains data from App Check, including the app ID. // Your function logic follows. ... } );
Update kode klien aplikasi Anda untuk mendapatkan token penggunaan terbatas yang dapat dipakai saat memanggil fungsi:
Swift
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true) let yourCallableFunction = Functions.functions().httpsCallable("yourCallableFunction", options: options) do { let result = try await yourCallableFunction.call() } catch { // ... }
Web
import { getFunctions, httpsCallable } from "firebase/functions"; const yourCallableFunction = httpsCallable( getFunctions(), "yourCallableFunction", { limitedUseAppCheckTokens: true }, ); await yourCallableFunction();
Kotlin+KTX
val yourCallableFunction = Firebase.functions.getHttpsCallable("yourCallableFunction") { limitedUseAppCheckTokens = true } val result = yourCallableFunction.call().await()
Java
HttpsCallableReference yourCallableFunction = FirebaseFunctions.getInstance().getHttpsCallable( "yourCallableFunction", new HttpsCallableOptions.Builder() .setLimitedUseAppCheckTokens(true) .build() ); Task<HttpsCallableResult> result = yourCallableFunction.call();