میتوانید از App Check برای محافظت از منابع باطن سفارشی غیرGoogle برای برنامهتان، مثل باطن خودمیزبان خودتان، استفاده کنید. برای انجام این کار، باید هر دو مورد زیر را انجام دهید:
- همانطور که در این صفحه توضیح داده شده است، کارخواه برنامهتان را اصلاح کنید تا همراه با هر درخواست، یک کد App Check به باطن شما ارسال کند.
- همانطور که در درستیسنجی کردن توکنهای App Check از باطن سفارشی شرح داده شده است، باطن خود را بهگونهای اصلاح کنید که برای هر درخواست به توکن App Check معتبر نیاز داشته باشد.
قبل از شروع
App Check را بااستفاده از ارائهدهنده Play Integrity پیشفرض یا ارائهدهنده سفارشی به برنامهتان اضافه کنید.
ارسال کردن نشانهای App Check با درخواستهای پسین
برای اطمینان از اینکه درخواستهای پسین شما شامل یک کد App Check معتبر و منقضینشده است،
هر درخواست را در یک فراخوانی به getAppCheckToken() قرار دهید. کتابخانه App Check
درصورت لزوم، کد را بازآوری میکند و میتوانید در شنونده موفقیت روش به کد دسترسی پیدا کنید.
وقتی که یک کد معتبر دارید، آن را همراه با درخواست به باطن خود ارسال کنید. جزئیات نحوه انجام این کار به شما بستگی دارد، اما نشانهها را بهعنوان بخشی از نشانیهای وب ارسال نکنیدApp Check، ازجمله در پارامترهای پُرسمان، زیرا این کار آنها را دربرابر نشت تصادفی و رهگیری آسیبپذیر میکند. رویکرد توصیهشده این است که توکن را در سرایند HTTP سفارشی ارسال کنید.
برای مثال، اگر از Retrofit استفاده میکنید:
Kotlin
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); // ... } }); } }
محافظت دربرابر بازپخش (بتا)
هنگام درخواست به نقطه پایانی که برای آن
محافظت دربرابر بازپخش را فعال کردهاید،
درخواست را بهجای getAppCheckToken() در فراخوانی به getLimitedUseAppCheckToken()
بپیچید:
Kotlin
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );