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

TypeHeaderOù l'utiliserNiveau d'accès
Public KeyX-Feda-Project-KeyApp Flutter / Web / MobileLimité (transactions, abonnements)
Secret KeyX-Feda-Project-SecretBackend serveur uniquementComplet (gestion admin)
JWT BearerAuthorization: BearerDashboard / outils de gestionAdmin 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-define pour 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

Suivant : Dépannage ->