Mit App Check können Sie benutzerdefinierte Backend-Ressourcen für Ihre App schützen, die nicht von Google stammen, z. B. Ihr eigenes selbst gehostetes Backend. Dazu müssen Sie Folgendes tun:
- Ändern Sie Ihren App-Client so, dass er mit jeder Anfrage an Ihr Backend ein App Check-Token sendet, wie auf dieser Seite beschrieben.
- Ändern Sie Ihr Backend so, dass für jede Anfrage ein gültiges App Check-Token erforderlich ist, wie unter App Check-Tokens aus einem benutzerdefinierten Backend bestätigen beschrieben.
Hinweis
Fügen Sie App Check in Ihre App ein. Verwenden Sie dazu entweder App Attest, DeviceCheck oder einen benutzerdefinierten Anbieter.
App Check-Tokens mit Backend-Anfragen senden
Damit Ihre Backend-Anfragen ein gültiges, nicht abgelaufenes App Check-Token enthalten, müssen Sie jede Anfrage in einen Aufruf von AppCheck.token()
einbetten. Die App Check-Bibliothek aktualisiert das Token bei Bedarf. Sie können im Abschlussblock der Methode darauf zugreifen.
Sobald Sie ein gültiges Token haben, senden Sie es zusammen mit der Anfrage an Ihr Backend. Wie Sie das genau umsetzen, liegt bei Ihnen. Senden Sie App Check-Tokens jedoch nicht als Teil von URLs, auch nicht in Suchparametern, da sie dadurch anfällig für versehentliches Weitergeben und Abfangen werden. Im folgenden Beispiel wird das Token in einem benutzerdefinierten HTTP-Header gesendet. Dies ist die empfohlene Vorgehensweise.
Swift
do { let token = try await AppCheck.appCheck().token(forcingRefresh: false) // Get the raw App Check token string. let tokenString = token.token // Include the App Check token with requests to your server. let url = URL(string: "https://yourbackend.example.com/yourApiEndpoint")! var request = URLRequest(url: url) request.httpMethod = "GET" request.setValue(tokenString, forHTTPHeaderField: "X-Firebase-AppCheck") let task = URLSession.shared.dataTask(with: request) { data, response, error in // Handle response from your backend. } task.resume() } catch(let error) { print("Unable to retrieve App Check token: \(error)") return }
Objective-C
[[FIRAppCheck appCheck] tokenForcingRefresh:NO completion:^(FIRAppCheckToken * _Nullable token, NSError * _Nullable error) { if (error != nil) { // Handle any errors if the token was not retrieved. NSLog(@"Unable to retrieve App Check token: %@", error); return; } if (token == nil) { NSLog(@"Unable to retrieve App Check token."); return; } // Get the raw App Check token string. NSString *tokenString = token.token; // Include the App Check token with requests to your server. NSURL *url = [[NSURL alloc] initWithString:@"https://yourbackend.example.com/yourApiEndpoint"]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; [request setHTTPMethod:@"GET"]; [request setValue:tokenString forHTTPHeaderField:@"X-Firebase-AppCheck"]; NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // Handle response from your backend. }]; [task resume]; }];
Schutz vor Replay-Angriffen (Beta)
Wenn Sie eine Anfrage an einen Endpunkt senden, für den Sie Replay-Schutz aktiviert haben, umschließen Sie die Anfrage mit einem Aufruf von limitedUseToken()
anstelle von token()
:
Swift
AppCheck.appCheck().limitedUseToken() { token, error in
// ...
}
Objective-C
[[FIRAppCheck appCheck] limitedUseTokenWithCompletion:^(FIRAppCheckToken * _Nullable token,
NSError * _Nullable error) {
// ...
}];