Uygulamanızın Firebase dışındaki kaynaklarını (ör. kendi kendine barındırılan arka uçlar) App Check ile koruyabilirsiniz. Bunun için aşağıdakilerin ikisini birden yapmanız gerekir:
- Bu sayfada açıklandığı gibi, uygulama istemcinizi arka uçunuza her istekle birlikte bir App Check jetonu gönderecek şekilde değiştirin.
- Arka uçunuzu, Özel arka uçtan App Check jetonlarını doğrulama bölümünde açıklandığı gibi her istek için geçerli bir App Check jetonu gerektirecek şekilde değiştirin.
Başlamadan önce
App Attest, DeviceCheck veya özel bir sağlayıcı kullanarak App Check öğesini uygulamanıza ekleyin.
Arka uç istekleriyle App Check jetonları gönderme
Arka uç isteklerinizin geçerli, süresi dolmamış bir App Check jetonu içerdiğinden emin olmak için her isteği AppCheck.token()
çağrısına sarın. App Check kitaplığı gerekirse jetonu yeniler. Jetona, yöntemin tamamlama bloğundan erişebilirsiniz.
Geçerli bir jeton aldıktan sonra isteği arka ucunuza jetonla birlikte gönderin. Bunu nasıl yapacağınız size bağlıdır ancak App Check jetonlarını URL'lerin bir parçası olarak göndermeyin. Sorgu parametreleri dahil olmak üzere URL'lere eklendiğinde, jetonlar yanlışlıkla sızıntıya ve müdahaleye açık hale gelir. Aşağıdaki örnekte, jeton önerilen yaklaşım olan özel bir HTTP üstbilgisinde gönderilmektedir.
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]; }];
Tekrar koruması (beta)
Tekrar oynatma korumasını etkinleştirdiğiniz bir uç noktaya istek gönderirken isteği token()
yerine limitedUseToken()
çağrısına sarmalayın:
Swift
AppCheck.appCheck().limitedUseToken() { token, error in
// ...
}
Objective-C
[[FIRAppCheck appCheck] limitedUseTokenWithCompletion:^(FIRAppCheckToken * _Nullable token,
NSError * _Nullable error) {
// ...
}];