Na tej stronie znajdziesz instrukcje włączania funkcji App Check w aplikacji w C++, korzystając z własnego dostawcy App Check. Gdy włączysz App Check, masz pewność, że tylko Twoja aplikacja będzie miała dostęp do zasobów Firebase projektu.
Jeśli chcesz używać App Check z domyślnymi dostawcami, przeczytaj artykuł Włączanie App Check z domyślnymi dostawcami w C++.
Zanim zaczniesz
Dodaj Firebase do projektu C++, jeśli nie zostało to jeszcze zrobione.
Wdróż logikę po stronie serwera niestandardowego dostawcy App Check.
1. Dodawanie biblioteki App Check do aplikacji
Dodaj bibliotekę Sprawdzania aplikacji do zestawu zależności, postępując zgodnie z instrukcjami konfiguracji Sprawdzania aplikacji.
2. Wdróż interfejsy App Check
Najpierw musisz utworzyć klasy, które implementują interfejsy AppCheckProvider
i AppCheckProviderFactory
.
Klasa AppCheckProvider
musi zawierać metodę GetToken()
, która zbiera wszelkie informacje wymagane przez niestandardowego dostawcę App Check w celu potwierdzenia autentyczności, i wysyła ją do usługi pozyskiwania tokenów w zamian za token App Check. Pakiet SDK App Check obsługuje buforowanie tokenów, więc w implementacji GetToken()
zawsze otrzymujesz nowy token.
class YourCustomAppCheckProvider : public AppCheckProvider {
void GetToken(std::function<void(AppCheckToken, int, const std::string&)>
completion_callback) {
// Logic to exchange proof of authenticity for an App Check token and
// expiration time.
// ...
// Create AppCheckToken object.
AppCheckToken appCheckToken;
appCheckToken.token = token;
appCheckToken.expire_time_millis = expireTime;
completion_callback(appCheckToken, 0, "");
// Or, if needing to return an error
//completion_callback({}, error_code, "Error description");
}
};
Zaimplementuj też klasę AppCheckProviderFactory
, która tworzy instancje implementacji AppCheckProvider
:
class YourCustomAppCheckProviderFactory : public AppCheckProviderFactory {
AppCheckProvider* CreateProvider(App* app) {
// Create and return an AppCheckProvider object.
return new YourCustomAppCheckProvider(app);
}
}
3. Zainicjuj instancję App Check
Dodaj do aplikacji ten kod inicjalizacji, aby był wykonywany przed użyciem innych pakietów SDK Firebase:
firebase::app_check::AppCheck::SetAppCheckProviderFactory(
YourCustomAppCheckProviderFactory::GetInstance());
Dalsze kroki
Po zainstalowaniu biblioteki App Check w aplikacji rozpocznij dystrybucję zaktualizowanej aplikacji do użytkowników.
Zaktualizowana aplikacja kliencka zacznie wysyłać tokeny App Check wraz z każdym żądaniem do Firebase, ale usługi Firebase nie będą wymagały ważności tokenów, dopóki nie włączysz wymuszania w sekcji App Check konsoli Firebase.
Monitorowanie danych i włączanie egzekwowania
Zanim jednak włączysz egzekwowanie zasad, upewnij się, że nie zakłóci to działania dotychczasowych prawidłowych użytkowników. Jeśli jednak zauważysz podejrzane korzystanie z zasobów aplikacji, możesz wcześniej włączyć egzekwowanie.
Aby ułatwić sobie podjęcie decyzji, możesz sprawdzić dane App Check dotyczące usług, których używasz:
- Monitoruj dane żądań App Check w przypadku Realtime Database, Cloud Firestore, Cloud Storage, Authentication (beta) i Vertex AI in Firebase.
- Monitoruj dane App Check dotyczące żądań w przypadku Cloud Functions.
Włącz egzekwowanie zasady App Check
Gdy zrozumiesz, jak App Check wpłynie na Twoich użytkowników, i będziesz gotowy do dalszych działań, możesz włączyć egzekwowanie App Check:
- Włącz egzekwowanie zasad App Check dla: Realtime Database, Cloud Firestore, Cloud Storage, Authentication (beta) i Vertex AI in Firebase.
- Włącz egzekwowanie App Check w domenie Cloud Functions.
Używanie App Check w środowiskach debugowania
Jeśli po zarejestrowaniu aplikacji w usłudze App Check chcesz uruchomić ją w środowisku, które App Check normalnie nie kwalifikuje jako prawidłowe, np. w emulatorze podczas tworzenia lub w środowisku ciągłej integracji (CI), możesz utworzyć wersję debugową aplikacji, która używa dostawcy debugowania App Check zamiast prawdziwego dostawcy uwierzytelniania.
Zobacz Korzystanie z App Check z dostawcą debugowania w C++.