Esta página mostra como ativar o App Check em um aplicativo Apple, usando seu provedor personalizado do App Check . Ao ativar o App Check, você ajuda a garantir que apenas seu aplicativo possa acessar os recursos do Firebase do seu projeto.
Se você quiser usar o App Check com os provedores integrados, consulte a documentação do App Check com App Attest e App Check com DeviceCheck .
Antes de você começar
Adicione o Firebase ao seu projeto Apple , caso ainda não tenha feito isso.
Implemente a lógica personalizada do lado do servidor do seu provedor do App Check .
1. Adicione a biblioteca App Check ao seu aplicativo
Adicione a dependência do App Check ao
Podfile
do seu projeto:pod 'FirebaseAppCheck'
Ou, alternativamente, você pode usar o Swift Package Manager .
Além disso, verifique se você está usando a versão mais recente de qualquer biblioteca de cliente de serviço do Firebase da qual você depende.
Execute
pod install
e abra o arquivo.xcworkspace
criado.
2. Implementar os protocolos App Check
Primeiro, você precisa criar classes que implementem os protocolos AppCheckProvider
e AppCheckProviderFactory
.
Sua classe AppCheckProvider
deve ter um método getToken(completion:)
, que coleta todas as informações que seu provedor personalizado do App Check exige como prova de autenticidade e as envia para seu serviço de aquisição de token em troca de um token do App Check. O SDK do App Check lida com o cache de token, portanto, sempre obtenha um novo token em sua implementação de getToken(completion:)
.
class YourCustomAppCheckProvider: NSObject, AppCheckProvider {
var app: FirebaseApp
init(withFirebaseApp app: FirebaseApp) {
self.app = app
super.init()
}
func getToken() async throws -> AppCheckToken {
let getTokenTask = Task { () -> AppCheckToken in
// ...
// Create AppCheckToken object.
let exp = Date(timeIntervalSince1970: expirationFromServer)
let token = AppCheckToken(
token: tokenFromServer,
expirationDate: exp
)
if Date() > exp {
throw NSError(domain: "ExampleError", code: 1, userInfo: nil)
}
return token
}
return try await getTokenTask.value
}
}
@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider>
@property FIRApp *app;
- (id)initWithApp:(FIRApp *)app;
@end
@implementation YourCustomAppCheckProvider
- (id)initWithApp:app {
self = [super init];
if (self) {
self.app = app;
}
return self;
}
- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable,
NSError * _Nullable))handler {
dispatch_async(dispatch_get_main_queue(), ^{
// Logic to exchange proof of authenticity for an App Check token.
// ...
// Create FIRAppCheckToken object.
NSTimeInterval exp = expirationFromServer;
FIRAppCheckToken *token
= [[FIRAppCheckToken alloc] initWithToken:tokenFromServer
expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]];
// Pass the token or error to the completion handler.
handler(token, nil);
});
}
@end
Além disso, implemente uma classe AppCheckProviderFactory
que crie instâncias de sua implementação AppCheckProvider
:
class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory {
func createProvider(with app: FirebaseApp) -> AppCheckProvider? {
return YourCustomAppCheckProvider(withFirebaseApp: app)
}
}
@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
@end
@implementation YourCustomAppCheckProviderFactory
- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
return [[YourCustomAppCheckProvider alloc] initWithApp:app];
}
@end
3. Inicialize a verificação do aplicativo
Adicione o seguinte código de inicialização ao delegado ou inicializador do aplicativo:
let providerFactory = YourAppCheckProviderFactory()
AppCheck.setAppCheckProviderFactory(providerFactory)
FirebaseApp.configure()
YourAppCheckProviderFactory *providerFactory =
[[YourAppCheckProviderFactory alloc] init];
[FIRAppCheck setAppCheckProviderFactory:providerFactory];
[FIRApp configure];
Próximos passos
Depois que a biblioteca do App Check estiver instalada em seu aplicativo, comece a distribuir o aplicativo atualizado para seus usuários.
O aplicativo cliente atualizado começará a enviar tokens do App Check junto com todas as solicitações feitas ao Firebase, mas os produtos do Firebase não exigirão que os tokens sejam válidos até que você ative a aplicação na seção App Check do console do Firebase.
Monitore métricas e habilite a aplicação
Antes de ativar a aplicação, no entanto, você deve certificar-se de que isso não interromperá os usuários legítimos existentes. Por outro lado, se você perceber um uso suspeito dos recursos do seu aplicativo, convém ativar a aplicação mais cedo.
Para ajudar a tomar essa decisão, você pode observar as métricas do App Check para os serviços que você usa:
- Monitore métricas de solicitação do App Check para Realtime Database, Cloud Firestore, Cloud Storage e Authentication (beta).
- Monitore métricas de solicitação do App Check para Cloud Functions .
Ativar a aplicação do App Check
Quando você entender como o App Check afetará seus usuários e estiver pronto para prosseguir, poderá ativar a aplicação do App Check:
- Ative a aplicação do App Check para Realtime Database, Cloud Firestore, Cloud Storage e Authentication (beta).
- Ativar a aplicação do App Check para Cloud Functions .
Use o App Check em ambientes de depuração
Se, depois de registrar seu aplicativo no App Check, você quiser executá-lo em um ambiente que o App Check normalmente não classificaria como válido, como um simulador durante o desenvolvimento ou em um ambiente de integração contínua (CI), você poderá crie uma compilação de depuração do seu aplicativo que use o provedor de depuração do App Check em vez de um provedor de atestado real.
Consulte Usar o App Check com o provedor de depuração em plataformas Apple .