2022년 10월 18일에 오프라인과 온라인으로 진행될 Firebase Summit에 참여하세요. Firebase로 앱을 빠르게 개발하고 안심하고 앱을 출시하며 손쉽게 확장하는 방법을 알아보세요. 지금 등록하기

Android에서 맞춤형 제공업체를 통해 App Check 사용 시작하기

이 페이지에서는 맞춤형 App Check 공급자를 사용하여 Android 앱에서 App Check를 활성화하는 방법을 보여줍니다. 앱 확인을 활성화하면 앱만 프로젝트의 Firebase 리소스에 액세스할 수 있도록 할 수 있습니다.

기본 Play Integrity 공급자와 함께 앱 검사를 사용 하려면 Android에서 Play Integrity로 앱 검사 활성화 를 참조하세요.

시작하기 전에

1. 앱에 App Check 라이브러리 추가

모듈(앱 수준) Gradle 파일(일반적으로 app/build.gradle )에서 App Check Android 라이브러리에 대한 종속성을 선언합니다.

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.2'
}

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.0.2'
}

2. 앱 체크 인터페이스 구현

먼저 AppCheckProviderAppCheckProviderFactory 인터페이스를 구현하는 클래스를 만들어야 합니다.

AppCheckProvider 클래스에는 사용자 지정 App Check 공급자가 진위 증명으로 요구하는 모든 정보를 수집하고 App Check 토큰과 교환하여 토큰 획득 서비스로 보내는 getToken() 메서드가 있어야 합니다. App Check SDK는 토큰 캐싱을 처리하므로 getToken() 구현 시 항상 새 토큰을 가져옵니다.

Java

public class YourCustomAppCheckToken extends AppCheckToken {
    private String token;
    private long expiration;

    YourCustomAppCheckToken(String token, long expiration) {
        this.token = token;
        this.expiration = expiration;
    }

    @NonNull
    @Override
    public String getToken() {
        return token;
    }

    @Override
    public long getExpireTimeMillis() {
        return expiration;
    }
}

public class YourCustomAppCheckProvider implements AppCheckProvider {
    @Override
    public Task<AppCheckToken> getToken() {
        // Logic to exchange proof of authenticity for an App Check token and
        //   expiration time.
        // ...

        // Refresh the token early to handle clock skew.
        long expMillis = expirationFromServer * 1000 - 60000;

        // Create AppCheckToken object.
        AppCheckToken appCheckToken =
                YourCustomAppCheckToken(tokenFromServer, expMillis);

        return appCheckToken;
    }
}

Kotlin+KTX

class YourCustomAppCheckToken(
    private val token: String,
    private val expiration: Long
) : AppCheckToken() {
    override fun getToken(): String {
        return token
    }

    override fun getExpireTimeMillis(): Long {
        return expiration
    }
}

class YourCustomAppCheckProvider : AppCheckProvider {
    val token: Task<AppCheckToken>
        get() {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Refresh the token early to handle clock skew.
            val expMillis: Long = expirationFromServer * 1000 - 60000

            // Create AppCheckToken object.
            val appCheckToken: AppCheckToken =
                    YourCustomAppCheckToken(tokenFromServer, expMillis)

            return appCheckToken!
        }
}

또한 AppCheckProvider 구현의 인스턴스를 생성하는 AppCheckProviderFactory 클래스를 구현합니다.

Java

public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
  @Override
  public AppCheckProvider create(FirebaseApp firebaseApp) {
    // Create and return an AppCheckProvider object.
    return new YourCustomAppCheckProvider(firebaseApp);
  }
}

Kotlin+KTX

class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
    fun create(firebaseApp: FirebaseApp): AppCheckProvider {
        // Create and return an AppCheckProvider object.
        return YourCustomAppCheckProvider(firebaseApp)
    }
}

3. 앱 체크 초기화

다른 Firebase SDK를 사용하기 전에 실행되도록 다음 초기화 코드를 앱에 추가합니다.

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance())

다음 단계

앱 체크 라이브러리가 앱에 설치되면 업데이트된 앱을 사용자에게 배포하기 시작합니다.

업데이트된 클라이언트 앱은 Firebase에 대한 모든 요청과 함께 App Check 토큰을 보내기 시작하지만 Firebase 콘솔의 App Check 섹션에서 시행을 활성화할 때까지 Firebase 제품에서 토큰이 유효하지 않아도 됩니다.

메트릭 모니터링 및 시행 활성화

그러나 시행을 활성화하기 전에 그렇게 하는 것이 기존의 합법적인 사용자를 방해하지 않는지 확인해야 합니다. 반면에 앱 리소스가 의심스럽게 사용되는 경우 더 빨리 시행을 활성화하는 것이 좋습니다.

이 결정을 내리는 데 도움이 되도록 사용하는 서비스에 대한 App Check 측정항목을 볼 수 있습니다.

앱 검사 시행 활성화

앱 확인이 사용자에게 어떤 영향을 미치는지 이해하고 계속 진행할 준비가 되면 앱 확인 시행을 활성화할 수 있습니다.

디버그 환경에서 앱 검사 사용

App Check에 앱을 등록한 후 개발 중 에뮬레이터와 같이 App Check가 일반적으로 유효한 것으로 분류하지 않는 환경에서 또는 지속적 통합(CI) 환경에서 앱을 실행하려는 경우 다음을 수행할 수 있습니다. 실제 증명 공급자 대신 App Check 디버그 공급자를 사용하는 앱의 디버그 빌드를 만듭니다.

Android에서 디버그 공급자와 함께 앱 확인 사용을 참조하세요.