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에서 App Check로 Firebase 이외의 리소스 보호

App Check를 사용하여 자체 호스팅 백엔드와 같은 앱의 비 Firebase 리소스를 보호할 수 있습니다. 이렇게 하려면 다음 두 가지를 모두 수행해야 합니다.

  • 이 페이지에 설명된 대로 백엔드에 대한 각 요청과 함께 App Check 토큰을 보내도록 앱 클라이언트를 수정합니다.
  • 에 설명 된대로 유효한 응용 프로그램이 모든 요청과 토큰 확인 요구하는 백엔드 수정 사용자 정의 백엔드에서 앱 확인 토큰 확인을 .

시작하기 전에

중 하나를 사용하여 앱에 앱 검사를 추가 앱 증명 , DeviceCheck , 또는 사용자 지정 공급자를 .

백엔드 요청과 함께 App Check 토큰 보내기

백엔드 요청이 유효 만료되지 않은, 응용 프로그램이 토큰을 확인하려면 전화에서 각 요청을 포장 포함 보장하기 위해 AppCheck.token() . App Check 라이브러리는 필요한 경우 토큰을 새로 고치고 메서드의 완료 블록에서 토큰에 액세스할 수 있습니다.

유효한 토큰이 있으면 요청과 함께 백엔드로 보내십시오. 이 작업을 수행하는 방법의 세부 사항은 최대하지만,이 사고로 누출 차단에 취약하게 같은 쿼리 매개 변수에 포함 된 URL의 일부로 응용 프로그램 확인 토큰을 전송하지 않습니다. 다음 예에서는 권장되는 접근 방식인 사용자 지정 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()
}

오브젝티브-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];
}];