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

App Check, çeşitli sağlayıcılar için yerleşik desteğe sahiptir: Apple platformlarında DeviceCheck ve App Attest, Android'de Play Integrity ve web uygulamalarında reCAPTCHA Enterprise (genel bakış). Bunlar, çoğu geliştiricinin ihtiyaçlarını karşılayacak iyi bilinen sağlayıcılardır. Ancak kendi özel App Check sağlayıcılarınızı da uygulayabilirsiniz. Özel sağlayıcı kullanmak şu durumlarda gereklidir:

  • Yerleşik olanlar 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ı kullanarak 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ısı uygulamak için Node.js Firebase Admin SDK'yi çalıştırabilen güvenli bir arka uç ortamına ihtiyacınız vardır. Bu, Cloud Functions, Cloud Run gibi bir container 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 App Check jetonu döndüren, ağ üzerinden erişilebilen bir hizmet sunacaksınız. Kimlik doğrulama kanıtı olarak kullandığınız göstergeler, kullandığınız üçüncü taraf sağlayıcıya veya özel mantık uyguluyorsanız kendi oluşturduğunuz göstergelere bağlıdır.

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

Jeton edinme uç noktasını oluşturma

  1. Admin SDK uygulamasını yükleyin ve başlatın.

  2. Müşterilerinizden kimlik doğrulama verileri alabilen, ağ üzerinden erişilebilen bir uç nokta oluşturun. Örneğin, Cloud Functions kullanma:

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

  4. İstemcinin kimliğinin doğrulanmış olduğunu belirlerseniz Admin SDK kullanarak App Check jetonu oluşturun ve bu jetonu ile geçerlilik bitiş zamanını istemciye döndürü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ğrulayamıyorsanız bir hata döndürün (örneğin, HTTP 403 hatası döndürün).

  5. İsteğe bağlı: AppCheckTokenOptions nesnesini createToken()'e ileterek özel sağlayıcınız tarafından verilen 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 dengelemeleri göz önünde bulundurun:

    • Güvenlik: Sızdırılmış veya müdahale edilmiş bir jetonun saldırgan tarafından kötüye kullanılabileceği süreyi kısalttığı için daha kısa TTL'ler daha güçlü güvenlik sağlar.
    • Performans: Daha kısa TTL'ler, uygulamanızın doğrulama işlemini 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, bu mantığı Apple, Android ve web istemcilerinizden nasıl kullanacağınızı öğrenin.