Apparence
Configurer les notifications Firebase
Procédure exclusivement manuelle
Ces opérations sont réalisées par une personne mandatée côté client dans les consoles Google Cloud et Firebase. Le code, les scripts du dépôt et les agents de développement ne créent pas les comptes, projets, clés ou secrets décrits ci-dessous.
Cette procédure est à rejouer pour chaque environnement. Un projet Firebase ne doit jamais être partagé entre développement, préproduction et production.
Répartir les responsabilités
- Le client crée ou ouvre le compte Google avec l'adresse Gmail convenue.
- Le client donne à l'exploitant l'accès nécessaire au projet Firebase.
- L'exploitant installe les variables dans le
.envdu serveur concerné. - Le développeur ne reçoit que les valeurs publiques si elles sont nécessaires au diagnostic. Le JSON du compte de service reste dans le coffre de secrets du client et dans le
.envde l'environnement.
Créer le projet et l'application Web
- Ouvrez la console Firebase avec le compte client.
- Cliquez sur Créer un projet et donnez-lui un nom qui porte l'environnement, par exemple
apajh-gta-devouapajh-gta-preprod. - N'activez Google Analytics que si le client en a explicitement validé l'usage.
- Dans Vue d'ensemble du projet, cliquez sur Ajouter une application, puis choisissez l'icône Web
</>. - Nommez l'application avec l'environnement. L'hébergement Firebase n'est pas utilisé : ne l'activez pas.
- Relevez dans la configuration Web SDK les valeurs
apiKey,projectId,messagingSenderIdetappId. - Placez-les respectivement dans
VITE_FIREBASE_API_KEY,VITE_FIREBASE_PROJECT_ID,VITE_FIREBASE_MESSAGING_SENDER_IDetVITE_FIREBASE_APP_IDdu.envde l'environnement.
Ces quatre valeurs sont publiques par conception. Elles ne donnent pas accès au compte de service et ne remplacent aucune règle de sécurité côté serveur.
Activer Cloud Messaging et créer la clé VAPID
- Dans Paramètres du projet ▸ Cloud Messaging, vérifiez que l'API Firebase Cloud Messaging est active.
- Dans Configuration Web, créez une paire de clés sous Certificats Web Push si aucune clé n'existe pour cet environnement.
- Copiez uniquement la clé publique dans
VITE_FIREBASE_VAPID_KEY. - Conservez la clé privée gérée par Firebase. Ne la copiez ni dans le dépôt ni dans un ticket.
Restreindre la clé API publique
- Ouvrez Google Cloud Console ▸ API et services ▸ Identifiants pour le projet courant.
- Ouvrez la clé qui correspond à
VITE_FIREBASE_API_KEY. - Sous Restrictions relatives aux applications, choisissez Sites Web.
- Ajoutez les origines HTTPS exactes du frontend de cet environnement.
- Sous Restrictions relatives aux API, limitez la clé aux API Firebase réellement activées pour cette application.
- Enregistrez et vérifiez la cloche après propagation de la restriction.
Ne réutilisez pas une origine de développement dans la liste de préproduction ou de production.
Créer le compte de service d'envoi
- Ouvrez Google Cloud Console ▸ IAM et administration ▸ Comptes de service.
- Créez un compte dédié, par exemple
apajh-gta-fcm-sender. - Attribuez-lui le rôle Administrateur de l'API Firebase Cloud Messaging (
roles/firebasecloudmessaging.admin). N'attribuez pas les rôles Propriétaire ou Éditeur. - Ouvrez le compte créé, puis Clés ▸ Ajouter une clé ▸ Créer une clé ▸ JSON.
- Téléchargez le fichier une seule fois sur un poste d'administration sécurisé.
- Enregistrez le fichier dans le coffre de secrets du client avec le projet, l'environnement, le responsable et la date de création.
Encoder et installer le secret
Depuis PowerShell, placez le chemin réel du fichier JSON dans la commande suivante. Elle copie la valeur Base64 dans le presse-papiers sans l'écrire dans un second fichier :
powershell
$serviceAccountPath = 'C:\chemin\securise\firebase-service-account.json'
[Convert]::ToBase64String([IO.File]::ReadAllBytes($serviceAccountPath)) |
Set-Clipboard- Collez la valeur dans
FIREBASE_SERVICE_ACCOUNT_B64du.envdu serveur. - Supprimez le fichier téléchargé du poste après confirmation de sa présence dans le coffre de secrets.
- Ne collez jamais cette valeur dans Git, un ticket, un message ou un journal.
- Rebuild/recréez
frontend,backendetworkerpour charger toutes les valeurs publiques et le secret.
Vérifier l'installation réelle
Servez le frontend en HTTPS sur son nom de domaine définitif.
Connectez-vous avec un compte de recette.
Ouvrez la cloche et activez Autoriser les notifications navigateur.
Acceptez la demande du navigateur. Rechargez la page et vérifiez que l'activation reste affichée.
Dans le conteneur backend, exécutez :
bashpython manage.py send_test_notification <nom-utilisateur>Vérifiez que la notification apparaît dans la cloche.
Fermez l'onglet sans arrêter le navigateur, relancez la commande et vérifiez la notification système.
Activez un second navigateur pour le même compte et vérifiez que les deux reçoivent le message.
Révoquez l'autorisation sur un navigateur, relancez un envoi et vérifiez que l'autre navigateur reçoit toujours le message. Le premier appareil est supprimé automatiquement après le rejet renvoyé par Firebase.
Le push Web FCM de ce lot cible les navigateurs compatibles hors Safari/iOS.
Faire tourner ou révoquer la clé
- Créez une nouvelle clé JSON sur le même compte de service.
- Stockez-la dans le coffre et remplacez
FIREBASE_SERVICE_ACCOUNT_B64. - Recréez
backendetworker. - Validez un envoi avec
send_test_notification. - Supprimez l'ancienne clé dans Google Cloud seulement après ce contrôle.
- En cas de soupçon de fuite, désactivez immédiatement la clé concernée, installez une nouvelle clé et contrôlez les journaux d'audit Google Cloud.
À la suppression définitive d'un environnement, supprimez son projet Firebase après export des éléments d'audit requis par le client.