Khi bạn hiểu cách Kiểm tra ứng dụng sẽ ảnh hưởng đến người dùng của mình và bạn đã sẵn sàng tiếp tục, bạn có thể bật thực thi Kiểm tra ứng dụng.
Kích hoạt thực thi
Để bắt đầu thực thi các yêu cầu về mã thông báo Kiểm tra ứng dụng trong Chức năng đám mây có thể gọi của bạn, hãy sửa đổi các chức năng của bạn để kiểm tra mã thông báo Kiểm tra ứng dụng hợp lệ, như minh họa bên dưới. Khi bạn kích hoạt thực thi, tất cả các yêu cầu chưa được xác minh sẽ bị từ chối.
Cài đặt SDK chức năng đám mây.
Node.js (thế hệ thứ nhất)
Cập nhật phần phụ thuộc
firebase-functions
của dự án lên phiên bản 4.0.0 trở lên:npm install firebase-functions@">=4.0.0"
Node.js (thế hệ thứ 2)
Cập nhật phần phụ thuộc
firebase-functions
của dự án lên phiên bản 4.0.0 trở lên:npm install firebase-functions@">=4.0.0"
Python (xem trước)
Thêm
firebase-functions
vàofunctions/requirements.txt
:firebase-functions >= 0.1.0
Sau đó, cập nhật các phụ thuộc trong môi trường ảo của dự án của bạn:
./venv/bin/pip install -r requirements.txt
Bật tùy chọn thời gian chạy thực thi Kiểm tra ứng dụng cho chức năng của bạn:
Node.js (thế hệ thứ nhất)
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 (thế hệ thứ 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 (xem trước)
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. ...
Triển khai lại các chức năng của bạn:
firebase deploy --only functions
Khi những thay đổi này được triển khai, Chức năng đám mây có thể gọi của bạn sẽ yêu cầu mã thông báo Kiểm tra ứng dụng hợp lệ. SDK ứng dụng khách của Cloud Function tự động đính kèm mã thông báo Kiểm tra ứng dụng khi bạn gọi một hàm có thể gọi.
Bảo vệ phát lại (beta)
Để bảo vệ chức năng có thể gọi khỏi các cuộc tấn công phát lại, bạn có thể sử dụng mã thông báo Kiểm tra ứng dụng sau khi xác minh. Khi mã thông báo được sử dụng, nó không thể được sử dụng lại.
Lưu ý rằng việc sử dụng tính năng bảo vệ phát lại sẽ thêm một chuyến đi vòng quanh mạng để xác minh mã thông báo và do đó, thêm độ trễ cho lệnh gọi chức năng đám mây. Vì lý do này, hầu hết các ứng dụng thường chỉ kích hoạt tính năng bảo vệ phát lại trên các điểm cuối đặc biệt nhạy cảm.
Để tiêu thụ mã thông báo:
Trong Bảng điều khiển đám mây , hãy cấp vai trò "Trình xác minh mã thông báo kiểm tra ứng dụng Firebase" cho tài khoản dịch vụ được Chức năng đám mây sử dụng.
- Nếu bạn đang khởi chạy SDK quản trị một cách rõ ràng và bạn đã chỉ định thông tin xác thực tài khoản dịch vụ SDK quản trị của dự án, thì vai trò bắt buộc đã được cấp.
- Nếu bạn đang sử dụng Chức năng đám mây thế hệ thứ nhất với cấu hình SDK quản trị mặc định, hãy cấp vai trò cho tài khoản dịch vụ mặc định của App Engine . Xem Thay đổi quyền đối với tài khoản dịch vụ .
- Nếu bạn đang sử dụng Chức năng đám mây thế hệ thứ 2 với cấu hình SDK quản trị mặc định, hãy cấp vai trò cho tài khoản dịch vụ điện toán mặc định .
Đặt
consumeAppCheckToken
thànhtrue
trong định nghĩa chức năng của bạn:Node.js (thế hệ thứ nhất)
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 (thế hệ thứ 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. ... } );
Cập nhật mã máy khách ứng dụng của bạn để nhận mã thông báo sử dụng hạn chế có thể tiêu hao khi bạn gọi hàm:
Nhanh
let options = HTTPSCallableOptions(requireLimitedUseAppCheckTokens: true) let yourCallableFunction = Functions.functions().httpsCallable("yourCallableFunction", options: options) do { let result = try await yourCallableFunction.call() } catch { // ... }
API mô-đun 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();