Bật thực thi Kiểm tra ứng dụng cho các chức năng đám mây

Để bắt đầu thực thi các yêu cầu 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ệ.

Trước khi bắt đầu

Bật Kiểm tra ứng dụng trong ứng dụng Apple , AndroidWeb của bạn.

Thêm hỗ trợ Kiểm tra ứng dụng vào một chức năng

  1. Cập nhật phần phụ thuộc firebase-functions của dự án của bạn lên phiên bản 3.14.0 hoặc mới hơn:

    npm install firebase-functions@">=3.14.0"
    

    Và cập nhật phần phụ thuộc firebase-admin của dự án của bạn lên phiên bản 9.8.0 hoặc mới hơn:

    npm install firebase-admin@">=9.8.0"
    
  2. Thêm một kiểm tra cho context.app vào chức năng của bạn. Chức năng của bạn sẽ không thành công nếu context.app không được xác định.

    exports.yourCallableFunction = functions.https.onCall((data, context) => {
      // context.app will be undefined if the request doesn't include an
      // App Check token. (If the request includes an invalid App Check
      // token, the request will be rejected with HTTP error 401.)
      if (context.app == undefined) {
        throw new functions.https.HttpsError(
            'failed-precondition',
            'The function must be called from an App Check verified app.')
      }
    
      // Your function logic follows.
    });
    
  3. (Tùy chọn) Nếu bạn muốn xử lý mã thông báo Kiểm tra ứng dụng không hợp lệ bằng logic của riêng bạn (ví dụ: nếu bạn muốn tạm thời ghi nhật ký, thay vì từ chối, các yêu cầu không hợp lệ trước khi bật thực thi đầy đủ), hãy đặt allowInvalidAppCheckToken thành true :

    exports.yourCallableFunction = functions.
      .runWith({
        allowInvalidAppCheckToken: true  // Opt-out: Requests with invalid App
                                         // Check tokens continue to your code.
      })
      .https.onCall((data, context) => {
        // Now, requests with an invalid App Check token are not rejected.
        //
        // context.app will be undefined if the request:
        //   1) Does not include an App Check token
        //   2) Includes an invalid App Check token
        if (context.app == undefined) {
          // You can inspect the raw request header to check whether an App
          // Check token was provided in the request. If you're not ready to
          // fully enable App Check yet, you could log these conditions instead
          // of throwing errors.
          const rawToken = context.rawRequest.header['X-Firebase-AppCheck'];
          if (rawToken == undefined) {
            throw new functions.https.HttpsError(
                'failed-precondition',
                'The function must be called from an App Check verified app.'
            );
          } else {
            throw new functions.https.HttpsError(
                'unauthenticated',
                'Provided App Check token failed to validate.'
            );
          }
        }
    
        // Your function logic follows.
      });
    

    Để bật tính năng bảo vệ Kiểm tra ứng dụng đầy đủ, hãy đặt allowInvalidAppCheckToken thành false .

  4. 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, các 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 của Chức năng đám mây 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.