Vous pouvez protéger les ressources non Firebase de votre application, telles que les backends auto-hébergés, avec App Check. Pour ce faire, vous devrez effectuer les deux opérations suivantes :
- Modifiez votre client d'application pour envoyer un jeton App Check avec chaque demande à votre backend, comme décrit sur cette page.
- Modifiez votre backend pour exiger un jeton App Check valide avec chaque demande, comme décrit dans Vérifier les jetons App Check à partir d'un backend personnalisé .
Avant que tu commences
Ajoutez App Check à votre application, en utilisant soit le fournisseur reCAPTCHA Enterprise , soit un fournisseur personnalisé .
Envoyer des jetons App Check avec des requêtes backend
Dans votre client d'application, avant chaque demande, obtenez un jeton App Check valide et non expiré avec appCheck().getToken()
. La bibliothèque App Check actualisera le jeton si nécessaire.
Une fois que vous disposez d'un jeton valide, envoyez-le avec la demande à votre backend. Les détails de la manière dont vous y parvenez dépendent de vous, mais n'envoyez pas de jetons App Check dans le cadre des URL , y compris dans les paramètres de requête, car cela les rend vulnérables aux fuites et interceptions accidentelles. L'exemple suivant envoie le jeton dans un en-tête HTTP personnalisé, ce qui constitue l'approche recommandée.
Web modular API
import { initializeAppCheck, getToken } from 'firebase/app-check'; const appCheck = initializeAppCheck( app, { provider: provider } // ReCaptchaV3Provider or CustomProvider ); const callApiWithAppCheckExample = async () => { let appCheckTokenResponse; try { appCheckTokenResponse = await getToken(appCheck, /* forceRefresh= */ false); } catch (err) { // Handle any errors if the token was not retrieved. return; } // Include the App Check token with requests to your server. const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', { headers: { 'X-Firebase-AppCheck': appCheckTokenResponse.token, } }); // Handle response from your backend. };
Web namespaced API
const callApiWithAppCheckExample = async () => { let appCheckTokenResponse; try { appCheckTokenResponse = await firebase.appCheck().getToken(/* forceRefresh= */ false); } catch (err) { // Handle any errors if the token was not retrieved. return; } // Include the App Check token with requests to your server. const apiResponse = await fetch('https://yourbackend.example.com/yourApiEndpoint', { headers: { 'X-Firebase-AppCheck': appCheckTokenResponse.token, } }); // Handle response from your backend. };
Protection contre la relecture (bêta)
Lorsque vous envoyez une requête à un point de terminaison pour lequel vous avez activé la protection contre la relecture , obtenez un jeton en utilisant getLimitedUseToken()
au lieu de getToken()
:
import { getLimitedUseToken } from "firebase/app-check";
// ...
appCheckTokenResponse = await getLimitedUseToken(appCheck);