Uygulamanız için Google dışı özel arka uç kaynaklarını (ör. kendi kendine barındırılan arka ucunuz) korumak üzere App Check kullanabilirsiniz. Bunun için aşağıdakilerin ikisini de yapmanız gerekir:
- Uygulama istemcinizi, arka uçunuza gönderilen her istekle birlikte App Check jetonu gönderecek şekilde değiştirin. Bu işlem, bu sayfada açıklanmıştır.
- Arka ucunuzu, Özel bir arka uçtan gelen App Check jetonlarını doğrulama bölümünde açıklandığı gibi, her istekte geçerli bir App Check jetonu gerektirecek şekilde değiştirin.
Başlamadan önce
Varsayılan Play Integrity sağlayıcısını veya özel bir sağlayıcıyı kullanarak uygulamanıza App Check ekleyin.
Arka uç istekleriyle App Check jetonları gönderme
Arka uç isteklerinizin geçerli, süresi dolmamış bir App Check jetonu içerdiğinden emin olmak için her isteği getAppCheckToken()
çağrısına sarmalayın. App Check kitaplığı gerekirse jetonu yeniler ve jetona yöntemin başarı dinleyicisinden erişebilirsiniz.
Geçerli bir jetonunuz olduğunda, istekle birlikte arka ucunuza gönderin. Bunu nasıl yapacağınız size bağlıdır ancak URL'lerin bir parçası olarak App Check jetonları göndermeyin. Bu, sorgu parametreleri de dahil olmak üzere jetonların yanlışlıkla sızdırılmasına ve saldırıya uğramasına neden olur. Jetonu özel bir HTTP üstbilgisinde göndermeniz önerilir.
Örneğin, Retrofit kullanıyorsanız:
Kotlin
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 koruması (beta)
Yeniden oynatma korumasını etkinleştirdiğiniz bir uç noktaya istekte bulunurken isteği getAppCheckToken()
yerine getLimitedUseAppCheckToken()
çağrısıyla sarmalayın:
Kotlin
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );