Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Özel bir Uygulama Kontrolü sağlayıcısı uygulayın

Uygulama Kontrol yerleşik destek birkaç sağlayıcıları için: DeviceCheck ve Android'de iOS App kanıtlamak, SafetyNet veya web uygulamalarında reCAPTCHA v3 ( özet ). Bunlar, çoğu geliştiricinin ihtiyaçlarını karşılaması gereken iyi anlaşılmış sağlayıcılardır. Bununla birlikte, kendi özel Uygulama Kontrolü sağlayıcılarınızı da uygulayabilirsiniz. Özel bir sağlayıcı kullanmak şu durumlarda gereklidir:

  • iOS'ta DeviceCheck veya App Attest, Android'de SafetyNet veya web uygulamalarında reCAPTCHA dışında bir sağlayıcı kullanmak istiyorsunuz.

  • iOS, Android ve web dışındaki platformları kullanan cihazları doğrulamak istiyorsunuz. Örneğin, masaüstü işletim sistemleri veya Nesnelerin İnterneti cihazları için Uygulama Kontrolü sağlayıcıları oluşturabilirsiniz.

  • Herhangi bir platformda kendi doğrulama tekniklerinizi uygulamak istiyorsunuz.

genel bakış

Bir özel App Kontrol sağlayıcı uygulamak için, node.js çalıştırabilirsiniz güvenli bir arka uç bir ortam gerekiyor Firebase Yönetici SDK'yı . Bu Bulut Fonksiyonlar gibi bir kap platform olabilir Bulut Run veya kendi sunucusunda.

Bu ortamdan, uygulama istemcilerinizden orijinallik kanıtı alan ve orijinallik kanıtı orijinallik değerlendirmenizi geçerse, bir Uygulama Kontrolü belirteci döndüren ağ üzerinden erişilebilir bir hizmet sağlarsınız. Orijinallik kanıtı olarak kullandığınız belirli göstergeler, kullandığınız üçüncü taraf sağlayıcıya veya özel mantık uyguluyorsanız kendi buluşunuzun göstergelerine bağlı olacaktır.

Genellikle bu hizmeti bir REST veya gRPC uç noktası olarak sunarsınız, ancak bu ayrıntı size bağlıdır.

Belirteç edinme uç noktasını oluşturun

  1. Yükleme ve Yönetici SDK'sini başlatmak .

  2. İstemcilerinizden özgünlük verileri alabilen, ağdan erişilebilen bir uç nokta oluşturun. Örneğin, Bulut İşlevlerini kullanarak:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. Orijinallik verilerini değerlendiren uç nokta mantığına ekleyin. Bu, kendi yazmanız gereken özel Uygulama Kontrolü sağlayıcınızın temel mantığıdır.

  4. İstemcinin orijinal olduğunu belirlerseniz, bir Uygulama Kontrolü belirtecini basmak için Yönetici SDK'sını kullanın ve onu ve sona erme süresini istemciye iade edin:

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

    İstemcinin orijinalliğini doğrulayamazsanız, bir hata döndürün (örneğin, bir HTTP 403 hatası döndürün).

  5. İsteğe bağlı: Set süre-canlı bir ileterek özel sağlayıcı tarafından yayınlanan Uygulama Kontrol simgeleri için (TTL) AppCheckTokenOptions itiraz createToken() . TTL'yi 30 dakika ile 7 gün arasında herhangi bir değere ayarlayabilirsiniz. Bu değeri ayarlarken aşağıdaki ödünleşimlerin farkında olun:

    • Güvenlik: Daha kısa TTL'ler daha güçlü güvenlik sağlar çünkü sızdırılmış veya ele geçirilmiş bir belirtecin bir saldırgan tarafından kötüye kullanılabileceği pencereyi azaltır.
    • Performans: Daha kısa TTL'ler, uygulamanızın daha sık doğrulama gerçekleştireceği anlamına gelir. Uygulama doğrulama işlemi, her gerçekleştirildiğinde ağ isteklerine gecikme eklediğinden, kısa bir TTL uygulamanızın performansını etkileyebilir.

    1 saatlik varsayılan TTL, çoğu uygulama için uygundur.

Sonraki adımlar

Şimdi özel sağlayıcının sunucu tarafı mantığını uyguladığınızı, senin onu kullanmayı öğrenmek iOS , Android ve web istemcileri.