Zaimplementuj niestandardowego dostawcę sprawdzania aplikacji

App Check ma wbudowaną obsługę kilku dostawców: DeviceCheck i App Attest na platformach Apple, Play Integrity i SafetyNet na Androidzie oraz reCAPTCHA Enterprise w aplikacjach internetowych ( przegląd ). Są to dobrze znani dostawcy, którzy powinni zaspokoić potrzeby większości programistów. Można jednak także wdrożyć własnych, niestandardowych dostawców kontroli aplikacji. 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 zweryfikować urządzenia korzystające z platform innych niż Apple, Android i internet. Można na przykład utworzyć dostawców sprawdzania aplikacji dla systemów operacyjnych dla komputerów stacjonarnych lub urządzeń Internetu rzeczy.

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

Przegląd

Aby zaimplementować niestandardowego dostawcę sprawdzania aplikacji, potrzebujesz bezpiecznego środowiska backendowego, w którym można uruchomić pakiet SDK administratora Firebase Node.js. Może to być Cloud Functions, platforma kontenerowa, taka jak Cloud Run , lub Twój własny serwer.

W tym środowisku zapewnisz usługę dostępną przez sieć, która otrzyma dowód autentyczności od klientów aplikacji i — jeśli dowód autentyczności przejdzie pomyślnie ocenę autentyczności — zwróci token sprawdzania aplikacji. Konkretne wskaźniki, których użyjesz jako dowodu autentyczności, będą zależeć od zewnętrznego dostawcy, z którego korzystasz, lub od wskaźników własnego wynalazku, jeśli wdrażasz logikę niestandardową.

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

Utwórz punkt końcowy pozyskiwania tokenu

  1. Zainstaluj i zainicjuj pakiet Admin SDK .

  2. Utwórz punkt końcowy dostępny w sieci, który będzie mógł odbierać dane o autentyczności od Twoich klientów. Na przykład, korzystając z 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 autentyczności. Jest to podstawowa logika niestandardowego dostawcy sprawdzania aplikacji, którą musisz napisać samodzielnie.

  4. Jeśli stwierdzisz, że klient jest autentyczny, użyj pakietu Admin SDK, aby utworzyć token Sprawdzania aplikacji 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 (na przykład zwróć błąd HTTP 403).

  5. Opcjonalnie : ustaw czas wygaśnięcia (TTL) dla tokenów sprawdzania aplikacji wystawionych przez niestandardowego dostawcę, przekazując obiekt AppCheckTokenOptions do createToken() . Można ustawić TTL na dowolną wartość z zakresu od 30 minut do 7 dni. Ustawiając tę ​​wartość, należy pamiętać o następujących kompromisach:

    • Bezpieczeństwo: Krótsze czasy TTL zapewniają większe bezpieczeństwo, ponieważ zmniejszają okno, w którym atakujący może wykorzystać wyciekający lub przechwycony token.
    • Wydajność: krótsze czasy TTL oznaczają, że aplikacja będzie częściej przeprowadzać atestację. Ponieważ proces zaświadczania aplikacji za każdym razem zwiększa opóźnienie żądań sieciowych, krótki czas TTL może mieć wpływ na wydajność aplikacji.

    Domyślny TTL wynoszący 1 godzinę jest rozsądny w przypadku większości aplikacji.

Następne kroki

Teraz, gdy masz już zaimplementowaną logikę po stronie serwera niestandardowego dostawcy, dowiedz się, jak z niej korzystać z poziomu klientów Apple , Android i internetowych .