您可以使用 App Check 保護應用程式的非 Firebase 資源,例如自託管後端。為此,您需要執行以下兩項操作:
- 修改您的應用程式用戶端,將應用程式檢查令牌與每個請求一起傳送到您的後端,如本頁所述。
- 修改您的後端,使每個請求都需要有效的應用程式檢查令牌,如從自訂後端驗證應用程式檢查令牌中所述。
在你開始之前
使用預設的Play Integrity 提供者或自訂提供者將 App Check 新增到您的應用程式。
透過後端請求發送 App Check 令牌
為了確保您的後端請求包含有效的、未過期的 App Check 令牌,請將每個請求包裝在對getAppCheckToken()
的呼叫中。如果需要,App Check 庫將刷新令牌,您可以在方法的成功偵聽器中存取令牌。
獲得有效令牌後,將其與請求一起發送到後端。如何完成此操作的具體細節取決於您,但不要將 App Check 令牌作為 URL 的一部分發送,包括在查詢參數中,因為這會使它們容易受到意外洩漏和攔截。建議的方法是在自訂 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); // ... } }); } }
重播保護(測試版)
當向已啟用重播保護的端點發出請求時,請將請求包裝在對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(); // ... } } );