Wdrażanie niestandardowego dostawcy Sprawdzania aplikacji

App Check ma wbudowaną obsługę kilku dostawców: DeviceCheck i AppAttest na platformach Apple, Play Integrity na Androidzie oraz reCAPTCHA Enterprise w aplikacjach internetowych (omówienie). Są to znani dostawcy, którzy powinni spełniać potrzeby większości deweloperów. Możesz jednak też wdrożyć własnych dostawców App Check. Korzystanie z niestandardowego dostawcy jest konieczne, gdy:

  • Chcesz użyć dostawcy innego niż wbudowany.

  • Chcesz używać wbudowanych dostawców w nieobsługiwany sposób.

  • Chcesz weryfikować urządzenia korzystające z platform innych niż Apple, Android i internet. Możesz na przykład utworzyć App Checkdostawców systemów operacyjnych na komputery lub urządzeń internetu rzeczy.

  • Chcesz wdrożyć własne techniki weryfikacji na dowolnej platformie.

Przegląd

Aby wdrożyć niestandardowego dostawcę App Check, potrzebujesz bezpiecznego środowiska backendu, w którym można uruchomić Firebase Admin SDK Node.js. Może to być Cloud Functions platforma kontenerów, np. Cloud Run, lub Twój własny serwer.

W tym środowisku udostępnisz usługę dostępną w sieci, która będzie otrzymywać od klientów aplikacji dowód autentyczności i – jeśli dowód autentyczności przejdzie ocenę autentyczności – zwracać App Checktoken. Konkretne wskaźniki, których używasz jako dowodu autentyczności, zależą od dostawcy zewnętrznego, z którego usług korzystasz, lub od wskaźników, które sam wymyślisz, jeśli wdrażasz niestandardową logikę.

Zwykle udostępniasz tę usługę jako punkt końcowy REST lub gRPC, ale to zależy od Ciebie.

Tworzenie punktu końcowego uzyskiwania tokena

  1. Zainstaluj i zainicjuj Admin SDK.

  2. Utwórz punkt końcowy dostępny w sieci, który może odbierać dane o autentyczności od Twoich klientów. Na przykład używając Cloud Functions:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. Dodaj do logiki punktu końcowego, która ocenia dane uwierzytelniające. Jest to podstawowa logika niestandardowego dostawcy App Check, którą musisz napisać samodzielnie.

  4. Jeśli stwierdzisz, że klient jest autentyczny, użyj Admin SDK, aby wygenerować token App Check i zwrócić go wraz z czasem wygaśnięcia do klienta:

    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);
       });
    

    Jeśli nie możesz zweryfikować autentyczności klienta, zwróć błąd (np. błąd HTTP 403).

  5. Opcjonalnie: ustaw czas życia danych (TTL) dla tokenów App Check wydawanych przez niestandardowego dostawcę, przekazując obiekt AppCheckTokenOptions do funkcji createToken(). Wartość TTL możesz ustawić w zakresie od 30 minut do 7 dni. Ustawiając tę wartość, pamiętaj o tych kompromisach:

    • Bezpieczeństwo: krótsze czasy TTL zapewniają większe bezpieczeństwo, ponieważ skracają okres, w którym wyciekły lub przechwycony token może zostać wykorzystany przez atakującego.
    • Wydajność: krótsze czasy TTL oznaczają, że aplikacja będzie częściej przeprowadzać atestowanie. Proces potwierdzania aplikacji za każdym razem, gdy jest wykonywany, zwiększa opóźnienie w przypadku żądań sieciowych, dlatego krótki czas TTL może mieć wpływ na wydajność aplikacji.

    Domyślna wartość TTL wynosząca 1 godzinę jest odpowiednia w przypadku większości aplikacji.

Dalsze kroki

Po wdrożeniu logiki po stronie serwera niestandardowego dostawcy dowiedz się, jak używać jej w klientach Apple, Androidinternetowych.