Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Proteja los recursos que no son de Firebase con App Check en iOS

Puedes proteger los recursos de tu aplicación que no son de Firebase, como los backends autohospedados, con App Check. Para hacerlo, deberá modificar su cliente de aplicación para enviar un token de verificación de aplicación junto con cada solicitud a su backend, y modificar su backend para requerir un token de verificación de aplicación válido con cada solicitud; ambas tareas se describen a continuación.

Antes de que empieces

Añadir App cheque a su aplicación, ya sea mediante la aplicación Attest , DeviceCheck , o un proveedor personalizado .

Enviar tokens de App Check con solicitudes de backend

Para garantizar que sus peticiones de back-end incluyen un válido y vigente, App Check modo, envolver cada solicitud en una llamada a AppCheck.token() . La biblioteca App Check actualizará el token si es necesario, y puede acceder al token en el bloque de finalización del método.

Una vez que tenga un token válido, envíelo junto con la solicitud a su backend. Los detalles de cómo se logra esto son de usted, pero no envían App Verificar fichas como parte de la URL, incluso en los parámetros de consulta, ya que esto los hace vulnerables a la fuga accidental e intercepción. El siguiente ejemplo envía el token en un encabezado HTTP personalizado, que es el enfoque recomendado.

Rápido

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 objetivo

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

Verificar tokens de verificación de aplicaciones en el backend

En su código de fondo, si aún no lo ha instalado el SDK del administrador Node.js , que lo hagan. Luego, agregue lógica a sus puntos finales de API que haga lo siguiente:

  • Compruebe que cada solicitud incluya un token de verificación de aplicaciones.

  • Verificar la aplicación Comprobar símbolo utilizando el SDK de administración appCheck().verifyToken() método.

    Si la verificación tiene éxito, verifyToken() devuelve el App decodificado Compruebe token. La verificación exitosa indica que el token se originó en una aplicación que pertenece a su proyecto de Firebase.

Rechace cualquier solicitud que falle en cualquiera de las dos comprobaciones. Por ejemplo, usando el middleware Express.js:

const express = require('express');
const app = express();

const firebaseAdmin = require('firebase-admin');
const firebaseApp = firebaseAdmin.initializeApp();

const appCheckVerification = async (req, res, next) => {
    const appCheckToken = req.header('X-Firebase-AppCheck');

    if (!appCheckToken) {
        res.status(401);
        return next('Unauthorized');
    }

    try {
        const appCheckClaims = await firebaseAdmin.appCheck().verifyToken(appCheckToken);

        // If verifyToken() succeeds, continue with the next middleware
        // function in the stack.
        return next();
    } catch (err) {
        res.status(401);
        return next('Unauthorized');
    }
}

app.get('/yourApiEndpoint', [appCheckVerification], (req, res) => {
    // Handle request.
});