Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Android에서 App Check로 Firebase 이외의 리소스 보호

App Check를 사용하여 자체 호스팅 백엔드와 같은 앱의 비 Firebase 리소스를 보호할 수 있습니다. 이렇게 하려면 다음 두 가지를 모두 수행해야 합니다.

  • 이 페이지에 설명된 대로 백엔드에 대한 각 요청과 함께 App Check 토큰을 보내도록 앱 클라이언트를 수정합니다.
  • 에 설명 된대로 유효한 응용 프로그램이 모든 요청과 토큰 확인 요구하는 백엔드 수정 사용자 정의 백엔드에서 앱 확인 토큰 확인을 .

시작하기 전에

기본 중 하나를 사용하여 앱에 앱 확인을 추가 인 SafetyNET 제공 또는 사용자 지정 공급자를 .

백엔드 요청과 함께 App Check 토큰 보내기

백엔드 요청이 유효 만료되지 않은, 응용 프로그램이 토큰을 확인하려면 전화에서 각 요청을 포장 포함 보장하기 위해 getAppCheckToken() . App Check 라이브러리는 필요한 경우 토큰을 새로 고치고 메서드의 성공 수신기에서 토큰에 액세스할 수 있습니다.

유효한 토큰이 있으면 요청과 함께 백엔드로 보내십시오. 이 작업을 수행하는 방법의 세부 사항은 최대하지만,이 사고로 누출 차단에 취약하게 같은 쿼리 매개 변수에 포함 된 URL의 일부로 응용 프로그램 확인 토큰을 전송하지 않습니다. 권장되는 접근 방식은 사용자 지정 HTTP 헤더에서 토큰을 보내는 것입니다.

예를 들어 Retrofit을 사용하는 경우:

자바

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);
                        // ...
                    }
                });
    }
}

코틀린+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)
                // ...
            }
    }
}