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

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 SafetyNet ve web uygulamalarında reCAPTCHA Enterprise ( genel bakış ). Bunlar, çoğu geliştiricinin ihtiyaçlarını karşılaması gereken iyi anlaşılmış sağlayıcılardır. Ancak kendi özel Uygulama Kontrolü sağlayıcılarınızı da uygulayabilirsiniz. Özel bir sağlayıcının kullanılması şu durumlarda gereklidir:

  • Yerleşik sağlayıcıların dışında bir sağlayıcı kullanmak istiyorsunuz.

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

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

  • Kendi doğrulama tekniklerinizi herhangi bir platformda uygulamak istiyorsunuz.

Genel Bakış

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

Bu ortamdan, uygulama istemcilerinizden orijinallik kanıtını alan ve orijinallik kanıtı orijinallik değerlendirmenizi geçerse bir Uygulama Kontrolü jetonu döndüren, ağ üzerinden erişilebilen bir hizmet sunacaksınız. Orijinalliğin 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 REST veya gRPC uç noktası olarak kullanıma sunarsınız ancak bu ayrıntı size bağlıdır.

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

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

  2. İstemcilerinizden kimlik doğrulama verilerini alabilen, ağ üzerinden 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.onRequest((request, response) => {
      // ...
    });
    
  3. Orijinallik verilerini değerlendiren uç nokta mantığını ekleyin. Bu, kendi başınıza yazmanız gereken özel Uygulama Kontrolü sağlayıcınızın temel mantığıdır.

  4. İstemcinin orijinal olduğunu belirlerseniz, bir Uygulama Denetimi jetonu oluşturmak ve bunu ve son kullanma tarihini istemciye iade etmek için Yönetici SDK'sını 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 orijinalliğini doğrulayamıyorsanız bir hata döndürün (örneğin, bir HTTP 403 hatası döndürün).

  5. İsteğe bağlı : createToken() öğesine bir AppCheckTokenOptions nesnesi ileterek, özel sağlayıcınız tarafından verilen Uygulama Kontrolü belirteçlerinin 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 ödünleşimlere dikkat edin:

    • Güvenlik: Daha kısa TTL'ler daha güçlü güvenlik sağlar çünkü sızdırılan veya ele geçirilen bir token'ın 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 süreci, her gerçekleştirilişinde ağ isteklerine gecikme kattığı için kısa bir TTL, uygulamanızın performansını etkileyebilir.

    Varsayılan 1 saatlik TTL çoğu uygulama için makuldür.

Sonraki adımlar

Artık ö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.

,

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 SafetyNet ve web uygulamalarında reCAPTCHA Enterprise ( genel bakış ). Bunlar, çoğu geliştiricinin ihtiyaçlarını karşılaması gereken iyi anlaşılmış sağlayıcılardır. Ancak kendi özel Uygulama Kontrolü sağlayıcılarınızı da uygulayabilirsiniz. Özel bir sağlayıcının kullanılması şu durumlarda gereklidir:

  • Yerleşik sağlayıcıların dışında bir sağlayıcı kullanmak istiyorsunuz.

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

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

  • Kendi doğrulama tekniklerinizi herhangi bir platformda uygulamak istiyorsunuz.

Genel Bakış

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

Bu ortamdan, uygulama istemcilerinizden orijinallik kanıtını alan ve orijinallik kanıtı orijinallik değerlendirmenizi geçerse bir Uygulama Kontrolü jetonu döndüren, ağ üzerinden erişilebilen bir hizmet sunacaksınız. Orijinalliğin 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 REST veya gRPC uç noktası olarak kullanıma sunarsınız ancak bu ayrıntı size bağlıdır.

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

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

  2. İstemcilerinizden kimlik doğrulama verilerini alabilen, ağ üzerinden 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.onRequest((request, response) => {
      // ...
    });
    
  3. Orijinallik verilerini değerlendiren uç nokta mantığını ekleyin. Bu, kendi başınıza yazmanız gereken özel Uygulama Kontrolü sağlayıcınızın temel mantığıdır.

  4. İstemcinin orijinal olduğunu belirlerseniz, bir Uygulama Denetimi jetonu oluşturmak ve bunu ve son kullanma tarihini istemciye iade etmek için Yönetici SDK'sını 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 orijinalliğini doğrulayamıyorsanız bir hata döndürün (örneğin, bir HTTP 403 hatası döndürün).

  5. İsteğe bağlı : createToken() öğesine bir AppCheckTokenOptions nesnesi ileterek, özel sağlayıcınız tarafından verilen Uygulama Kontrolü belirteçlerinin 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 ödünleşimlere dikkat edin:

    • Güvenlik: Daha kısa TTL'ler daha güçlü güvenlik sağlar çünkü sızdırılan veya ele geçirilen bir token'ın 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 süreci, her gerçekleştirilişinde ağ isteklerine gecikme kattığı için kısa bir TTL, uygulamanızın performansını etkileyebilir.

    Varsayılan 1 saatlik TTL çoğu uygulama için makuldür.

Sonraki adımlar

Artık ö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.