Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Zaimplementuj niestandardowego dostawcę sprawdzania aplikacji

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

App Check ma wbudowaną obsługę kilku dostawców: DeviceCheck i App Attest na platformach Apple, Play Integrity i SafetyNet na Androidzie oraz reCAPTCHA v3 i reCAPTCHA Enterprise w aplikacjach internetowych ( przegląd ). Są to dobrze zrozumiani dostawcy, którzy powinni zaspokoić potrzeby większości programistów. Możesz jednak również zaimplementować własnych niestandardowych dostawców sprawdzania aplikacji. Korzystanie z niestandardowego dostawcy jest konieczne, gdy:

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

  • Chcesz korzystać z wbudowanych dostawców w nieobsługiwany sposób.

  • Chcesz weryfikować urządzenia za pomocą platform innych niż Apple, Android i internet. Na przykład możesz utworzyć dostawców App Check dla systemów operacyjnych 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 zaplecza, w którym można uruchomić pakiet Node.js Firebase Admin SDK . Może to być Cloud Functions, platforma kontenerowa, taka jak Cloud Run lub Twój własny serwer.

W tym środowisku udostępnisz usługę dostępną w sieci, która odbiera dowód autentyczności od klientów aplikacji i — jeśli dowód autentyczności przejdzie ocenę autentyczności — zwraca token sprawdzania aplikacji. Konkretne wskaźniki używane jako dowód autentyczności będą zależeć od używanego dostawcy zewnętrznego lub 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 ten szczegół zależy od Ciebie.

Utwórz punkt końcowy pozyskiwania tokena

  1. Zainstaluj i zainicjuj pakiet Admin SDK .

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

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. Dodaj do logiki punktu końcowego, która ocenia dane autentyczności. Jest to podstawowa logika Twojego niestandardowego dostawcy sprawdzania aplikacji, którą musisz napisać samodzielnie.

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

    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. Opcjonalne : Ustaw czas wygaśnięcia (TTL) dla tokenów sprawdzania aplikacji wystawionych przez niestandardowego dostawcę, przekazując obiekt AppCheckTokenOptions do createToken() . Możesz ustawić TTL na dowolną wartość z zakresu od 30 minut do 7 dni. Podczas ustawiania tej wartości należy pamiętać o następujących kompromisach:

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

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

Następne kroki

Teraz, po zaimplementowaniu logiki po stronie serwera niestandardowego dostawcy, dowiedz się, jak z niej korzystać w klientach Apple , Android i internetowych .