Firebase is back at Google I/O on May 10! Register now

احمِ الموارد بخلاف Firebase باستخدام App Check على أنظمة Apple الأساسية

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يمكنك حماية موارد تطبيقك بخلاف Firebase ، مثل الخلفيات المستضافة ذاتيًا ، باستخدام App Check. للقيام بذلك ، سوف تحتاج إلى القيام بالأمرين التاليين:

  • قم بتعديل عميل التطبيق الخاص بك لإرسال رمز التحقق من التطبيق جنبًا إلى جنب مع كل طلب إلى الواجهة الخلفية ، كما هو موضح في هذه الصفحة.
  • قم بتعديل الواجهة الخلفية للمطالبة برمز مميز صالح للتحقق من التطبيق مع كل طلب ، كما هو موضح في Verify App Check tokens من خلفية مخصصة .

قبل ان تبدأ

أضف التحقق من التطبيق إلى تطبيقك ، باستخدام إما App Attest أو DeviceCheck أو مزود مخصص .

إرسال رموز التحقق من التطبيق مع طلبات الخلفية

للتأكد من أن طلبات الواجهة الخلفية الخاصة بك تتضمن رمزًا مميزًا صالحًا وغير منتهي الصلاحية للتحقق من التطبيق ، قم بلف كل طلب في مكالمة إلى 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()
}

ج موضوعية

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