Uygulama Kontrolü ile uygulamanızın Firebase dışı kaynaklarını (ör. kendi bünyesinde barındırılan arka uçlar) koruyabilirsiniz. Bunu yapmak için aşağıdakilerin her ikisini de yapmanız gerekir:
- Uygulama istemcinizi, bu sayfada açıklandığı gibi arka ucunuza her istekle birlikte bir Uygulama Kontrolü jetonu gönderecek şekilde değiştirin.
- Özel bir arka uçtan Uygulama Kontrolü jetonlarını doğrulama bölümünde açıklandığı gibi, arka ucunuzu her istekte geçerli bir Uygulama Kontrolü jetonu isteyecek şekilde değiştirin.
Başlamadan önce
Varsayılan Play Integrity sağlayıcısını veya bir özel sağlayıcıyı kullanarak uygulamanıza Uygulama Kontrolü'nü ekleyin.
Arka uç istekleriyle Uygulama Kontrolü jetonları gönderme
Arka uç isteklerinizin geçerli ve süresi dolmamış bir Uygulama Kontrolü jetonu içerdiğinden emin olmak için her isteği bir getAppCheckToken()
çağrısında sarmalayın. Uygulama Kontrolü kitaplığı, gerekirse jetonu yeniler ve jetona yöntemin başarı işleyicisinden erişebilirsiniz.
Geçerli bir jetonunuz olduğunda bunu istekle birlikte arka ucunuza gönderin. Bunu nasıl başaracağınızla ilgili ayrıntıları siz belirlersiniz ancak sorgu parametreleri dahil olmak üzere Uygulama Kontrolü jetonlarını URL'lerin bir parçası olarak göndermeyin. Aksi takdirde, URL'ler yanlışlıkla sızıntılara ve müdahalelere karşı savunmasız hale gelir. Önerilen yaklaşım, jetonu özel bir HTTP başlığında göndermektir.
Örneğin, Retrofit'i kullanıyorsanız:
Kotlin+KTX
class ApiWithAppCheckExample { interface YourExampleBackendService { @GET("yourExampleEndpoint") fun exampleData( @Header("X-Firebase-AppCheck") appCheckToken: String, ): Call<List<String>> } var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder() .baseUrl("https://yourbackend.example.com/") .build() .create(YourExampleBackendService::class.java) fun callApiExample() { Firebase.appCheck.getAppCheckToken(false).addOnSuccessListener { appCheckToken -> val token = appCheckToken.token val apiCall = yourExampleBackendService.exampleData(token) // ... } } }
Java
public class ApiWithAppCheckExample { private interface YourExampleBackendService { @GET("yourExampleEndpoint") Call<List<String>> exampleData( @Header("X-Firebase-AppCheck") String appCheckToken); } YourExampleBackendService yourExampleBackendService = new Retrofit.Builder() .baseUrl("https://yourbackend.example.com/") .build() .create(YourExampleBackendService.class); public void callApiExample() { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(@NonNull AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); Call<List<String>> apiCall = yourExampleBackendService.exampleData(token); // ... } }); } }
Tekrar oynatma koruması (beta)
Tekrar oynatma korumasını etkinleştirdiğiniz bir uç noktaya istek gönderirken, isteği getAppCheckToken()
yerine getLimitedUseAppCheckToken()
çağrısıyla sarmalayın:
Kotlin+KTX
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );