Bạn có thể bảo vệ những tài nguyên không phải Firebase của ứng dụng, chẳng hạn như các phần phụ trợ tự lưu trữ, bằng App Check. Để thực hiện điều này, bạn cần phải thực hiện cả hai việc sau:
- Sửa đổi ứng dụng khách để gửi mã thông báo App Check cùng với từng yêu cầu đến phần phụ trợ, như mô tả trên trang này.
- Sửa đổi phần phụ trợ của bạn để yêu cầu mã thông báo App Check hợp lệ cho mọi yêu cầu, như mô tả trong phần Xác minh mã thông báo App Check từ một phần phụ trợ tuỳ chỉnh.
Trước khi bắt đầu
Thêm App Check vào ứng dụng bằng cách sử dụng nhà cung cấp API Tính toàn vẹn của Play mặc định hoặc nhà cung cấp tuỳ chỉnh.
Gửi mã thông báo App Check bằng các yêu cầu phụ trợ
Để đảm bảo các yêu cầu phụ trợ của bạn bao gồm mã thông báo App Check hợp lệ, chưa hết hạn, hãy gói từng yêu cầu trong lệnh gọi đến getAppCheckToken()
. Thư viện App Check sẽ làm mới mã thông báo nếu cần và bạn có thể truy cập vào mã thông báo trong trình nghe thành công của phương thức.
Sau khi bạn có mã thông báo hợp lệ, hãy gửi mã đó cùng với yêu cầu đến phần phụ trợ. Bạn có thể quyết định thông tin cụ thể về cách thực hiện việc này. Tuy nhiên, đừng gửi mã thông báo App Check dưới dạng URL (bao gồm cả trong tham số truy vấn), vì việc này khiến các mã đó dễ bị rò rỉ và chặn ngoài ý muốn. Phương pháp đề xuất là gửi mã thông báo trong tiêu đề HTTP tuỳ chỉnh.
Ví dụ: nếu bạn dùng 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); // ... } }); } }
Tính năng chống phát lại (thử nghiệm)
Khi đưa ra yêu cầu đến một điểm cuối mà bạn đã bật tính năng bảo vệ chống phát lại, hãy gói yêu cầu đó trong lệnh gọi đến getLimitedUseAppCheckToken()
thay vì 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(); // ... } } );