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

App Check 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, và reCAPTCHA v3 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õ 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 nhà cung cấp tùy chỉnh là cần thiết khi:

  • Bạn muốn sử dụng một nhà cung cấp khác với những nhà cung cấp được tích hợp sẵn.

  • Bạn muốn sử dụng các nhà cung cấp có sẵn theo những cách không được hỗ trợ.

  • Bạn muốn xác minh 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 quat

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

Tạo điểm cuối chuyển đổi mã thông báo

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

  2. 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ừ các máy khách 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á tính xác thực của dữ liệu. Đây là logic cốt lõi của nhà cung cấp Kiểm tra ứng dụng tùy chỉnh của bạn mà bạn sẽ cần phải tự viết.

  4. Nếu bạn xác định ứng dụng khách là xác thực, hãy sử dụng SDK quản trị để tạo mã thông báo Kiểm tra ứng dụng và trả lại mã này cũng như thời gian hết hạn của nó cho khách hà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 phát hành bằng cách chuyển đối tượng AppCheckTokenOptions vào 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 thiết lập giá trị này, hãy lưu ý những điểm cân bằng sau:

    • Bảo mật: Các TTL ngắn hơn cung cấp khả năng bảo mật mạnh mẽ hơn, vì nó làm giảm thời lượng mà 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. Vì quá 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, một 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ý cho 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 nó từ các ứng dụng khách Apple , Androidweb của bạn.