Catch up on highlights from Firebase at Google I/O 2023. Learn more

Triển khai nhà cung cấp Kiểm tra ứng dụng tùy chỉnh

Kiểm tra ứng dụng có hỗ trợ tích hợp cho một số nhà cung cấp: DeviceCheck và App Attest trên nền tảng Apple, Play Integrity và SafetyNet trên Android cũng như reCAPTCHA v3 và reCAPTCHA Enterprise trong ứng dụng web ( tổng quan ). Đây là những nhà cung cấp được hiểu rõ nên đáp ứng nhu cầu của hầu hết các nhà phát triển. Tuy nhiên, bạn cũng có thể triển khai các nhà cung cấp Kiểm tra ứng dụng tùy chỉnh của riêng mình. Sử dụng một nhà cung cấp tùy chỉnh là cần thiết khi:

  • Bạn muốn sử dụng một trình cung cấp khác với trì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 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 Kiểm tra ứng dụng cho hệ điều hành máy tính để bàn 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 bất kỳ nền tảng nào.

Tổng quan

Để triển khai nhà cung cấp Kiểm tra ứng dụng tùy chỉnh, bạn cần có một môi trường phụ trợ an toàn có thể chạy SDK quản trị Firebase của Node.js. Đây có thể là Chức năng đám mây, 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 dịch vụ có thể truy cập mạng để nhận bằng chứng xác thực từ các ứng dụng khách của bạn và—nếu bằng chứng xác thực vượt qua bài đánh giá xác thực của bạn—sẽ trả lại mã thông báo Kiểm tra ứng dụng. Các chỉ báo cụ thể mà bạn sử dụng làm bằng chứng 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 về phát minh của chính bạn, nếu bạn đang triển khai logic tùy 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 chi tiết này tùy thuộc vào bạn.

Tạo điểm cuối mua lại mã thông báo

  1. Cài đặt và khởi tạo SDK quản trị .

  2. Tạo điểm cuối có thể truy cập mạng có thể nhận dữ liệu xác thực từ khách hàng của bạn. Ví dụ: sử dụng Chức năng đám mây:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. 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 Kiểm tra ứng dụng tùy chỉnh mà bạn sẽ cần phải tự viết.

  4. Nếu bạn xác định ứng dụng này là xác thực, hãy sử dụng SDK quản trị để đúc mã thông báo Kiểm tra ứng dụng và trả lại mã đó 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 khách, hãy trả về lỗi (ví dụ: trả về lỗi HTTP 403).

  5. Tùy chọn : Đặt thời gian tồn tại (TTL) cho mã thông báo Kiểm tra ứng dụng do nhà cung cấp tùy chỉnh của bạn cấp bằng cách chuyển một đối tượng AppCheckTokenOptions tới createToken() . Bạn có thể đặt TTL thành bất kỳ giá trị nào trong khoảng thời gian từ 30 phút đến 7 ngày. Khi đặt giá trị này, hãy lưu ý các cân bằng sau:

    • Bảo mật: TTL ngắn hơn cung cấp bảo mật mạnh hơn, vì nó làm giảm khoảng thời gian trong đó mã thông báo bị rò rỉ hoặc bị chặn có thể bị kẻ tấn công lạm dụng.
    • 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. Bởi vì quy trình chứng thực ứng dụng thêm độ trễ cho các yêu cầu mạng mỗi khi nó đượ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 của bạn.

    TTL mặc định là 1 giờ là hợp lý đối với hầu hết các ứng dụng.

Bước tiếp theo

Bây giờ bạn đã triển khai logic phía máy chủ của nhà cung cấp tùy chỉnh của mình, hãy tìm hiểu cách sử dụng logic đó từ ứng dụng khách Apple , Androidweb của bạn.