App Check tích hợp sẵn tính năng hỗ trợ cho một số nhà cung cấp: DeviceCheck và Chứng thực ứng dụng trên các nền tảng của Apple, API Tính toàn vẹn của Play trên Android và reCAPTCHA Enterprise trong ứng dụng web (tổng quan). Đây là những nhà cung cấp được hiểu rõ và có thể đáp ứng nhu cầu của hầu hết nhà phát triển. Tuy nhiên, bạn cũng có thể triển khai trình cung cấp App Check tuỳ chỉnh của riêng mình. Bạn cần sử dụng nhà cung cấp tuỳ chỉnh khi:
Bạn muốn sử dụng một nhà cung cấp khác ngoài nhà cung cấp tích hợp sẵn.
Bạn muốn sử dụng các trình cung cấp tích hợp sẵn theo cách không được hỗ trợ.
Bạn muốn xác minh các thiết bị sử dụng các nền tảng khác ngoài Apple, Android và web. Ví dụ: bạn có thể tạo nhà cung cấp App Check cho hệ điều hành máy tính hoặc thiết bị Internet-of-Things.
Bạn muốn triển khai các kỹ thuật xác minh của riêng mình trên mọi nền tảng.
Tổng quan
Để triển khai trình cung cấp App Check tuỳ chỉnh, bạn cần một môi trường phụ trợ bảo mật có thể chạy Node.js Firebase Admin SDK. Đây có thể là Cloud Functions, một nền tảng vùng chứa như Cloud Run hoặc máy chủ của riêng bạn.
Từ môi trường này, bạn sẽ cung cấp một dịch vụ có thể truy cập mạng để nhận bằng chứng về tính xác thực từ ứng dụng khách và nếu bằng chứng về tính xác thực vượt qua quy trình đánh giá tính xác thực của bạn, thì sẽ trả về một mã thông báo App Check. Các chỉ báo cụ thể mà bạn sử dụng làm bằng chứng về tính xác thực sẽ phụ thuộc vào nhà cung cấp bên thứ ba mà bạn đang sử dụng hoặc các chỉ báo của sáng chế của riêng bạn, nếu bạn đang triển khai logic tuỳ chỉnh.
Thông thường, bạn hiển thị dịch vụ này dưới dạng điểm cuối REST hoặc gRPC, nhưng bạn sẽ quyết định chi tiết này.
Tạo điểm cuối thu nạp mã thông báo
Tạo một điểm cuối có thể truy cập mạng có thể nhận dữ liệu xác thực từ ứng dụng của bạn. Ví dụ: sử dụng Cloud Functions:
// Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken exports.fetchAppCheckToken = functions.https.onRequest((request, response) => { // ... });
Thêm vào logic điểm cuối để đánh giá dữ liệu về tính xác thực. Đây là logic cốt lõi của trình cung cấp App Check tuỳ chỉnh mà bạn cần tự viết.
Nếu bạn xác định ứng dụng là xác thực, hãy sử dụng Admin SDK để tạo mã thông báo App Check và trả về mã thông báo đó cũng như thời gian hết hạn cho ứng dụng:
const admin = require('firebase-admin'); admin.initializeApp(); // ... admin.appCheck().createToken(appId) .then(function (appCheckToken) { // Token expires in an hour. const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60; // Return appCheckToken and expiresAt to the client. }) .catch(function (err) { console.error('Unable to create App Check token.'); console.error(err); });
Nếu bạn không thể xác minh tính xác thực của ứng dụng, hãy trả về lỗi (ví dụ: trả về lỗi HTTP 403).
Không bắt buộc: Thiết lập thời gian tồn tại (TTL) cho mã thông báo App Check do nhà cung cấp tuỳ chỉnh của bạn phát hành bằng cách truyền đối tượng
AppCheckTokenOptions
đếncreateToken()
. Bạn có thể đặt TTL thành bất kỳ giá trị nào trong khoảng từ 30 phút đến 7 ngày. Khi đặt giá trị này, hãy lưu ý những điểm đánh đổi sau:- Bảo mật: TTL ngắn hơn giúp tăng cường bảo mật vì giảm khoảng thời gian mà kẻ tấn công có thể lợi dụng mã thông báo bị rò rỉ hoặc bị chặn.
- Hiệu suất: TTL ngắn hơn nghĩa là ứng dụng của bạn sẽ thực hiện chứng thực thường xuyên hơn. Vì quy trình chứng thực ứng dụng làm tăng độ trễ cho các yêu cầu mạng mỗi khi quy trình này được thực hiện, nên TTL ngắn có thể ảnh hưởng đến hiệu suất của ứng dụng.
TTL mặc định là 1 giờ là hợp lý đối với hầu hết các ứng dụng.
Các bước tiếp theo
Giờ đây, bạn đã triển khai logic phía máy chủ của nhà cung cấp tuỳ chỉnh, hãy tìm hiểu cách sử dụng logic đó từ ứng dụng Apple, Android và web.