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

App Check, çeşitli sağlayıcılar için yerleşik destek sunar: Apple platformlarında DeviceCheck ve AppAttest, Android'de Play Integrity ve web uygulamalarında reCAPTCHA Enterprise (genel bakış). Bunlar, çoğu geliştiricinin ihtiyaçlarını karşılaması gereken, iyi bilinen sağlayıcılardır. Ancak kendi özel App Check sağlayıcılarınızı da uygulayabilirsiniz. Özel sağlayıcı kullanmanın gerekli olduğu durumlar:

  • Yerleşik sağlayıcılar dışında bir sağlayıcı kullanmak istiyorsanız.

  • Yerleşik sağlayıcıları desteklenmeyen şekillerde kullanmak istiyorsunuz.

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

  • Herhangi bir platformda kendi doğrulama tekniklerinizi uygulamak istiyorsanız.

Genel Bakış

Özel bir App Check sağlayıcı uygulamak için Node.js Firebase Admin SDK'i çalıştırabilecek güvenli bir arka uç ortamına ihtiyacınız vardır. Bu, Cloud Functions, Cloud Run gibi bir kapsayıcı platformu veya kendi sunucunuz olabilir.

Bu ortamda, uygulama istemcilerinizden kimlik doğrulama kanıtı alan ve kimlik doğrulama kanıtı kimlik doğrulama değerlendirmenizi geçerse bir App Check jetonu döndüren, ağa erişilebilen bir hizmet sağlarsınız. Gerçeklik 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 belirlediğiniz göstergelere bağlıdır.

Bu hizmeti genellikle REST veya gRPC uç noktası olarak açığa çıkarırsınız ancak bu ayrıntı size bağlıdır.

Jeton edinme uç noktası oluşturma

  1. Admin SDK'ı yükleyip başlatın.

  2. İstemcilerinizden kimlik doğrulama verileri alabilen, ağa erişilebilir bir uç nokta oluşturun. Örneğin, Cloud Functions kullanıldığında:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. Orijinallik verilerini değerlendiren uç nokta mantığına ekleyin. Bu, özel App Check sağlayıcınızın temel mantığıdır ve kendiniz yazmanız gerekir.

  4. İstemcinin orijinal olduğunu belirlerseniz App Check jetonu oluşturup bu jetonu ve geçerlilik süresi istemciye geri göndermek için Admin SDK kullanın:

    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 kimliğini doğrulayamazsanız bir hata döndürün (ör. HTTP 403 hatası döndürün).

  5. İsteğe bağlı: createToken()'e bir AppCheckTokenOptions nesnesi ileterek özel sağlayıcınız tarafından yayınlanan App Check jetonlarının geçerlilik süresini (TTL) ayarlayın. TTL'yi 30 dakika ile 7 gün arasında herhangi bir değere ayarlayabilirsiniz. Bu değeri ayarlarken aşağıdaki dengeleri göz önünde bulundurun:

    • Güvenlik: Daha kısa TTL'ler, sızdırılan veya müdahale edilen jetonun bir saldırgan tarafından kötüye kullanılabileceği süreyi kısalttığı için daha güçlü güvenlik sağlar.
    • Performans: Daha kısa TTL'ler, uygulamanızın doğrulamayı daha sık gerçekleştireceği anlamına gelir. Uygulama onay işlemi, her gerçekleştirildiğinde ağ isteklerine gecikme eklediğinden, kısa bir TTL, uygulamanızın performansını etkileyebilir.

    Varsayılan TTL değeri olan 1 saat, çoğu uygulama için uygundur.

Sonraki adımlar

Özel sağlayıcınızın sunucu tarafı mantığını uyguladığınıza göre, bunu Apple, Android ve web istemcilerinizden nasıl kullanacağınızı öğrenin.