Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

iOSのアプリチェックでFirebase以外のリソースを保護する

App Checkを使用すると、自己ホスト型バックエンドなど、アプリのFirebase以外のリソースを保護できます。これを行うには、次の両方を行う必要があります。

あなたが始める前に

いずれかを使用して、あなたのアプリにアプリのチェックを追加アプリの証明DeviceCheck 、またはカスタムプロバイダを

バックエンドリクエストでアプリチェックトークンを送信する

バックエンド要求が有効、期限が切れていない、アプリケーションは、トークン確認の呼び出しで各要求をラップ含ま確保するためにAppCheck.token() 。 App Checkライブラリは必要に応じてトークンを更新し、メソッドの完了ブロックでトークンにアクセスできます。

有効なトークンを取得したら、リクエストと一緒にバックエンドに送信します。あなたはこれを実現する方法の詳細は、あなた次第ですが、これは偶然の漏れや傍受するためにそれらが脆弱になりますよう、クエリパラメータを含め、URLの一部としてのAppチェックトークンを送信しません。次の例では、カスタムHTTPヘッダーでトークンを送信します。これは推奨されるアプローチです。

迅速

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()
}

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];
}];