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
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 avez un jeton valide, envoyez-le avec la demande à votre backend. C'est à vous de décider comment procéder, mais n'envoyez pas de jetons App Check dans le cadre d'URL , y compris dans les paramètres de requête, car cela les rend vulnérables aux fuites et aux interceptions accidentelles. L'exemple suivant envoie le jeton dans un en-tête HTTP personnalisé, ce qui est l'approche recommandée.
Web version 9
const { initializeAppCheck, getToken } = require('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 version 8
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. };