Możesz chronić zasoby aplikacji spoza Firebase, takie jak własne backendy, za pomocą Sprawdzania aplikacji. Aby to zrobić, musisz wykonać obie te czynności:
- Zmodyfikuj klienta aplikacji, aby wysyłał token Sprawdzania aplikacji przy każdym żądaniu do backendu, w sposób opisany na tej stronie.
- Zmodyfikuj backend tak, aby przy każdym żądaniu wymagany był prawidłowy token Sprawdzania aplikacji. jak opisano w sekcji Weryfikowanie tokenów Sprawdzania aplikacji z niestandardowego backendu.
Zanim zaczniesz
Dodaj Sprawdzanie aplikacji do swojej aplikacji, używając wartości domyślnej dostawcę Play Integrity lub dostawcy niestandardowego.
Wysyłaj tokeny Sprawdzania aplikacji z żądaniami backendu
Aby żądania backendu zawierały prawidłowy, niewygasły token Sprawdzania aplikacji,
umieść każde żądanie w wywołaniu funkcji getAppCheckToken()
. Biblioteka Sprawdzania aplikacji
w razie potrzeby odświeży token i będzie on dostępny na
detektora sukcesu metody.
Po uzyskaniu prawidłowego tokena wyślij go do backendu wraz z żądaniem. jak to zrobisz, zależy od Ciebie, ale nie wysyłaj Tokeny Sprawdzania aplikacji w ramach adresów URL, m.in. w parametrach zapytania, ponieważ narażają je na przypadkowe wyciek i przechwycenie. Zalecane wysłanie tokena w niestandardowym nagłówku HTTP.
Na przykład, jeśli używasz Retrofit:
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); // ... } }); } }
Ochrona ponownego odtwarzania (beta)
Podczas wysyłania żądania do punktu końcowego, dla którego włączono
ochrony przed ponownym odtwarzaniem,
umieść żądanie w wywołaniu funkcji getLimitedUseAppCheckToken()
zamiast
getAppCheckToken()
:
Kotlin+KTX
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );