2022 年 10 月 18 日に開催される Firebase Summit に、直接会場で、またはオンラインでご参加ください。Firebase を使用してアプリ開発を加速させ、自信を持ってアプリをリリースし、簡単にスケールする方法をご紹介します。 今すぐ登録

AndroidのアプリチェックでFirebase以外のリソースを保護する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

App Check を使用すると、セルフホステッド バックエンドなど、アプリの Firebase 以外のリソースを保護できます。そのためには、次の両方を行う必要があります。

  • このページで説明されているように、アプリ クライアントを変更して、各リクエストと共に App Check トークンをバックエンドに送信します。
  • カスタム バックエンドから App Check トークンを確認するで説明されているように、すべてのリクエストで有効な App Check トークンを要求するようにバックエンドを変更します。

あなたが始める前に

デフォルトのPlay Integrity プロバイダまたはカスタム プロバイダを使用して、App Check をアプリに追加します。

バックエンド リクエストで App Check トークンを送信する

バックエンド リクエストに有効で有効期限が切れていない App Check トークンが含まれていることを確認するには、各リクエストをgetAppCheckToken()の呼び出しでラップします。 App Check ライブラリは必要に応じてトークンを更新し、メソッドの成功リスナーでトークンにアクセスできます。

有効なトークンを取得したら、リクエストと一緒にバックエンドに送信します。これを実現する方法の詳細はユーザー次第ですが、 App Check トークンを URL の一部として送信しないでください。クエリ パラメータも含めてください。偶発的な漏洩や傍受に対して脆弱になるためです。推奨される方法は、カスタム HTTP ヘッダーでトークンを送信することです。

たとえば、レトロフィットを使用する場合:

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 tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        Call<List<String>> apiCall =
                                yourExampleBackendService.exampleData(appCheckToken);
                        // ...
                    }
                });
    }
}

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() {
        FirebaseAppCheck.getInstance()
            .getAppCheckToken(false)
            .addOnSuccessListener { tokenResponse ->
                val appCheckToken = tokenResponse.token
                val apiCall = yourExampleBackendService.exampleData(appCheckToken)
                // ...
            }
    }
}