Za pomocą Sprawdzania aplikacji możesz chronić zasoby swojej aplikacji inne niż Firebase, takie jak własne backendy. Aby to zrobić, musisz wykonać obie poniższe czynności:
- Zmodyfikuj klienta aplikacji, aby wysyłał token sprawdzania aplikacji wraz z każdym żądaniem do backendu, zgodnie z opisem na tej stronie.
- Zmodyfikuj swój backend tak, aby przy każdym żądaniu wymagał prawidłowego tokenu sprawdzania aplikacji, zgodnie z opisem w sekcji Weryfikowanie tokenów sprawdzania aplikacji z niestandardowego backendu .
Zanim zaczniesz
Dodaj Sprawdzanie aplikacji do swojej aplikacji, korzystając z domyślnego dostawcy Integralności Play lub dostawcy niestandardowego .
Wysyłaj tokeny sprawdzania aplikacji z żądaniami zaplecza
Aby mieć pewność, że żądania zaplecza zawierają prawidłowy, nie wygasły token sprawdzania aplikacji, zawiń każde żądanie w wywołaniu funkcji getAppCheckToken()
. W razie potrzeby biblioteka sprawdzania aplikacji odświeży token, a dostęp do tokenu będzie można uzyskać w odbiorniku powodzenia metody.
Gdy już będziesz mieć prawidłowy token, wyślij go wraz z żądaniem do swojego backendu. Szczegóły, jak to osiągnąć, zależą od Ciebie, ale nie wysyłaj tokenów Sprawdzania aplikacji jako części adresów URL , w tym w parametrach zapytania, ponieważ naraża to je na przypadkowy wyciek i przechwycenie. Zalecanym podejściem jest wysłanie tokena w niestandardowym nagłówku HTTP.
Na przykład, jeśli korzystasz z Retrofitu:
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 przed powtórkami (beta)
Wysyłając żądanie do punktu końcowego, dla którego włączono ochronę przed powtarzaniem , zawiń żądanie w wywołanie metody 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(); // ... } } );