Sie können die Nicht-Firebase-Ressourcen Ihrer App, wie z. B. selbst gehostete Back-Ends, mit App Check schützen. Dazu müssen Sie die beiden folgenden Schritte ausführen:
- Ändern Sie Ihren App-Client so, dass er zusammen mit jeder Anfrage ein App-Check-Token an Ihr Back-End sendet, wie auf dieser Seite beschrieben.
- Ändern Sie Ihr Back-End so, dass bei jeder Anfrage ein gültiges App-Check-Token erforderlich ist, wie unter Verifizieren von App-Check-Token von einem benutzerdefinierten Back-End beschrieben.
Bevor Sie beginnen
Fügen Sie Ihrer App App Check hinzu, indem Sie entweder App Attest , DeviceCheck oder einen benutzerdefinierten Anbieter verwenden.
Senden Sie App Check-Tokens mit Backend-Anfragen
Um sicherzustellen, dass Ihre Back-End-Anforderungen ein gültiges, nicht abgelaufenes App Check-Token enthalten, schließen Sie jede Anforderung in einen Aufruf von AppCheck.token()
ein. Die App Check-Bibliothek aktualisiert das Token bei Bedarf, und Sie können im Abschlussblock der Methode auf das Token zugreifen.
Sobald Sie ein gültiges Token haben, senden Sie es zusammen mit der Anfrage an Ihr Backend. Wie Sie dies im Einzelnen erreichen, liegt bei Ihnen, aber senden Sie App Check-Token nicht als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliches Durchsickern und Abfangen werden. Das folgende Beispiel sendet das Token in einem benutzerdefinierten HTTP-Header, was der empfohlene Ansatz ist.
Schnell
AppCheck.appCheck().token(forcingRefresh: false) { token, error in guard error == nil else { // Handle any errors if the token was not retrieved. print("Unable to retrieve App Check token: \(error!)") return } guard let token = token else { print("Unable to retrieve App Check token.") return } // 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() }
Ziel 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]; }];
Sie können die Nicht-Firebase-Ressourcen Ihrer App, wie z. B. selbst gehostete Back-Ends, mit App Check schützen. Dazu müssen Sie die beiden folgenden Schritte ausführen:
- Ändern Sie Ihren App-Client so, dass er zusammen mit jeder Anfrage ein App-Check-Token an Ihr Back-End sendet, wie auf dieser Seite beschrieben.
- Ändern Sie Ihr Back-End so, dass bei jeder Anfrage ein gültiges App-Check-Token erforderlich ist, wie unter Verifizieren von App-Check-Token von einem benutzerdefinierten Back-End beschrieben.
Bevor Sie beginnen
Fügen Sie Ihrer App App Check hinzu, indem Sie entweder App Attest , DeviceCheck oder einen benutzerdefinierten Anbieter verwenden.
Senden Sie App Check-Tokens mit Backend-Anfragen
Um sicherzustellen, dass Ihre Back-End-Anforderungen ein gültiges, nicht abgelaufenes App Check-Token enthalten, schließen Sie jede Anforderung in einen Aufruf von AppCheck.token()
ein. Die App Check-Bibliothek aktualisiert das Token bei Bedarf, und Sie können im Abschlussblock der Methode auf das Token zugreifen.
Sobald Sie ein gültiges Token haben, senden Sie es zusammen mit der Anfrage an Ihr Backend. Wie Sie dies im Einzelnen erreichen, liegt bei Ihnen, aber senden Sie App Check-Token nicht als Teil von URLs, auch nicht in Abfrageparametern, da sie dadurch anfällig für versehentliches Durchsickern und Abfangen werden. Das folgende Beispiel sendet das Token in einem benutzerdefinierten HTTP-Header, was der empfohlene Ansatz ist.
Schnell
AppCheck.appCheck().token(forcingRefresh: false) { token, error in guard error == nil else { // Handle any errors if the token was not retrieved. print("Unable to retrieve App Check token: \(error!)") return } guard let token = token else { print("Unable to retrieve App Check token.") return } // 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() }
Ziel 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]; }];