App Check có hỗ trợ tích hợp cho một số nhà cung cấp: DeviceCheck và App Attest trên các nền tảng của Apple, Play Integrity trên Android và reCAPTCHA Enterprise trong các ứ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 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ững nhà cung cấp tích hợp sẵn.
Bạn muốn sử dụng các nhà cung cấp tích hợp sẵn theo những cách không được hỗ trợ.
Bạn muốn xác minh thiết bị bằng các nền tảng khác ngoài Apple, Android và web. Ví dụ: bạn có thể tạo App Check nhà cung cấp 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 nhà cung cấp App Check tuỳ chỉnh, bạn cần có một môi trường phụ trợ an toàn có thể chạy Firebase Admin SDK cho Node.js. Đâ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 qua mạng, nhận bằng chứng xác thực từ ứng dụng khách và trả về mã thông báo App Check nếu bằng chứng xác thực vượt qua quy trình đánh giá tính xác thực. Các chỉ số cụ thể mà bạn sử dụng làm bằng chứng xác thực sẽ tuỳ thuộc vào nhà cung cấp bên thứ ba mà bạn đang sử dụng hoặc các chỉ số do bạn tự tạo nếu bạn đang triển khai logic tuỳ chỉnh.
Thông thường, bạn sẽ hiển thị dịch vụ này dưới dạng điểm cuối REST hoặc gRPC, nhưng bạn có thể tự quyết định chi tiết này.
Tạo điểm cuối thu thập mã thông báo
Tạo một điểm cuối có thể truy cập qua mạng và có thể nhận dữ liệu xác thực từ ứng dụng khách. 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 xác thực. Đây là logic cốt lõi của nhà cung cấp App Check tuỳ chỉnh mà bạn cần tự viết.
Nếu xác định ứng dụng khách là xác thực, hãy sử dụng Admin SDK để tạo một mã thông báo App Check và trả về mã thông báo đó cùng với thời gian hết hạn cho ứng dụng khách:
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 không xác minh được tính xác thực của ứng dụng khách, hãy trả về lỗi (ví dụ: trả về lỗi HTTP 403).
Không bắt buộc: Đặt 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 ý đến 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ì TTL ngắn hơn sẽ 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 có 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 sẽ thêm độ trễ vào các yêu cầu mạng mỗi khi đượ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 này từ ứng dụng khách Apple, Android và web.