您可以保護應用程式的非 Firebase 資源,例如自行管理的後端。 只在 App Check。如要這樣做,您必須同時完成下列兩項操作:
- 修改應用程式用戶端,以便在每次向後端傳送要求時一併傳送 App Check 權杖,如本頁所述。
- 修改後端,要求每項要求都提供有效的 App Check 權杖,如「從自訂後端驗證 App Check 權杖」一文所述。
事前準備
使用預設值,將 App Check 新增至您的應用程式 Play Integrity 供應商或 自訂供應商。
透過後端要求傳送 App Check 權杖
為確保後端要求包含有效、未過期的 App Check 權杖,
將每個要求納入 getAppCheckToken()
呼叫中。App Check 程式庫
系統就會視需要更新權杖,您可以在
方法的成功事件監聽器。
取得有效的權杖後,請將該權杖與要求傳送至後端。 您可以自行決定要如何完成這項作業,但請勿傳送 App Check 個符記,包含在查詢參數中,這是因為 容易造成意外的資料外洩和攔截建議您透過自訂 HTTP 標頭傳送權杖。
舉例來說,如果您使用 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); // ... } }); } }
重播防護措施 (Beta 版)
向已啟用重播保護的端點提出要求時,請在對 getLimitedUseAppCheckToken()
的呼叫中包裝要求,而非 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(); // ... } } );