Sécurité
Authentification & Clés
Comprendre les 3 types de clés ash-gate et comment les utiliser correctement.
Authentification & Clés
ash-gate utilise 3 types d'authentification selon le contexte d'utilisation.
Comparaison rapide
| Type | Header | Où l'utiliser | Niveau d'accès |
|---|---|---|---|
| Public Key | X-Feda-Project-Key | App Flutter / Web / Mobile | Limité (transactions, abonnements) |
| Secret Key | X-Feda-Project-Secret | Backend serveur uniquement | Complet (gestion admin) |
| JWT Bearer | Authorization: Bearer | Dashboard / outils de gestion | Admin plateforme |
1. Public Key — Pour vos apps clientes
La Public Key est safe à embarquer dans votre app mobile ou web. Elle ne donne accès qu'aux opérations de lecture/écriture non-sensibles.
// Flutter — OK d'être dans le code source
await FedaFlutter.applyCloudConfig(
projectKey: 'pk_sandbox_xxx', // Public Key
environment: 'sandbox',
proxyUrl: 'https://app.ashgateway.com',
);
# cURL — Créer une transaction
curl -X POST https://app.ashgateway.com/fedapay/transactions \
-H "X-Feda-Project-Key: pk_sandbox_xxx" \
-H "Content-Type: application/json" \
-d '{"amount": 5000, "currency": {"iso": "XOF"}, "description": "Achat test"}'
2. Secret Key — Pour vos serveurs uniquement
La Secret Key donne un accès complet au projet. Elle ne doit jamais être dans votre app mobile.
# .env côté serveur
FEDA_PROJECT_SECRET=sk_cloud_xxx
# cURL — Créer un plan depuis votre backend
curl -X POST https://app.ashgateway.com/fedapay/billing-plans \
-H "X-Feda-Project-Secret: sk_cloud_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Pack Pro",
"amount": 5000,
"currency": "XOF",
"interval": "monthly",
"trialDays": 14
}'
// NestJS / Node.js Backend
const headers = { 'X-Feda-Project-Secret': process.env.FEDA_PROJECT_SECRET };
const response = await axios.get('https://app.ashgateway.com/fedapay/subscriptions', { headers });
!WARNING Ne jamais faire ça dans une app Flutter :
// DANGER — expose votre Secret Key dio.options.headers['X-Feda-Project-Secret'] = 'sk_cloud_xxx';
3. JWT Bearer — Pour le dashboard
Utilisé automatiquement par le dashboard ash-gate et la CLI. Vous n'avez pas besoin de le gérer manuellement dans la plupart des cas.
# Après "wallet auth login", la CLI gère le token automatiquement
wallet project list # ← utilise le JWT en interne
wallet keys set ... # ← utilise le JWT en interne
Rotation des clés
Si une clé est compromise, régénérez-la immédiatement :
# Via CLI
wallet keys rotate --project mon-app
# Ou depuis le dashboard : Projet → Paramètres → Régénérer
!CAUTION La rotation invalide immédiatement l'ancienne clé. Mettez à jour toutes vos apps en production avant de tourner.
Bonnes pratiques
- Utilisez
--dart-definepour ne pas hardcoder les clés Flutter - Stockez la Secret Key dans un gestionnaire de secrets (Vault, GitHub Secrets...)
- Ayez une Public Key différente par environnement (sandbox/live)
- Ne commitez jamais une Secret Key dans Git