Cas d’usage
- Édition de modèles en marque blanche : laissez vos utilisateurs éditer des modèles sous votre propre marque
- Applications multi-tenant : accès sécurisé aux modèles par utilisateur sans exposer de clés API
- Workflows intégrés : création de modèles fluide au sein de votre produit
- Accès limité dans le temps : les jetons expirent automatiquement pour plus de sécurité
Comment ça fonctionne
- Votre serveur demande un jeton JWT à l’API de Firma en utilisant votre clé API
- Firma renvoie un jeton JWT de courte durée contenant l’ID du modèle
- Votre frontend intègre l’éditeur avec le jeton JWT
- Le jeton expire automatiquement (expiration configurable)
Limite de débit : les endpoints JWT prennent en charge 120 requêtes par minute par clé API pour les applications à fort volume.
Authentification JWT
Générer un jeton JWT
Générez un jeton JWT pour un modèle spécifique via l’endpoint/generate-template-token.
Endpoint : POST /generate-template-token
Corps de la requête :
Guide d’implémentation
Backend : générer un jeton JWT
Appelez l’API de Firma depuis votre backend pour générer un jeton JWT. Votre endpoint backend doit accepter un ID de modèle et renvoyer le JWT à votre frontend. Exemple Node.js :Implémentation frontend — HTML / JavaScript natif
Implémentation frontend — React
Options de configuration
Méthodes d’instance
Utilisez
triggerClose() lorsque votre application hôte doit fermer l’éditeur depuis sa propre interface, par exemple lors d’un événement de navigation parent ou d’un bouton « retour » :
Événements postMessage (éditeur → hôte)
L’éditeur de Firma émet des événements postMessage pour les actions importantes du cycle de vie. Voici un schéma d’événements minimal recommandé que vous pouvez implémenter pour réagir aux enregistrements et publications dans l’éditeur. Si vous disposez d’un schéma canonique dans votre plateforme, remplacez ces noms par vos noms d’événements officiels. Enveloppe de l’événement (payload window.postMessage) :Exemple d’écouteur côté client (JS simple)
Gestion du cycle de vie du jeton
Les jetons JWT sont générés avec une durée d’expiration suffisante pour des sessions d’édition classiques. L’éditeur gère automatiquement l’expiration du jeton.Expiration automatique
Les jetons JWT expirent automatiquement en fonction de l’horodatageexpires_at. Après expiration :
- L’éditeur intégré rejette le jeton
- Les utilisateurs doivent demander un nouveau jeton pour continuer
- Aucun appel API n’est nécessaire, les jetons expirent de manière passive
Limite de débit
Consultez le guide sur les Limites de débit.Bonnes pratiques de sécurité
✅ À faire
- ✅ Générez les jetons depuis votre serveur backend
- ✅ Surveillez les limites de débit
- ✅ Utilisez HTTPS pour toutes les requêtes API
❌ À ne pas faire
- ❌ N’exposez pas les clés API dans le code frontend
- ❌ Ne réutilisez pas les jetons entre différents utilisateurs
- ❌ Ne journalisez pas les jetons JWT (risque de sécurité)
- ❌ Ne partagez pas les jetons entre différents modèles
Dépannage
Erreur de jeton expiré
Symptôme : l’éditeur affiche « Token expired » ou une erreur d’authentification Solution :- Implémentez le renouvellement du jeton avant son expiration
- Générez un nouveau jeton et rechargez l’iframe
- Vérifiez la synchronisation de l’horloge système
401 Unauthorized
Symptôme : la génération du JWT échoue avec un 401 Causes possibles :- Clé API invalide ou manquante
- La clé API ne dispose pas des permissions requises
- La clé API est désactivée
404 Not Found
Symptôme : modèle introuvable lors de la génération du JWT Causes possibles :- L’ID du modèle n’existe pas
- Le modèle appartient à un autre espace de travail
- Le modèle a été supprimé
Limite de débit dépassée
Symptôme : 429 Too Many Requests Solution :- Implémentez la mise en cache des jetons
- Augmentez la durée d’expiration du jeton
- Attendez la réinitialisation de la limite de débit (vérifiez l’en-tête
X-RateLimit-Reset) - Implémentez une logique de nouvelle tentative avec backoff
Étapes suivantes
- Intégrer l’interface de signature pour une signature en marque blanche (100 req/min)
- Envoyer des demandes de signature avec des modèles personnalisés (100 req/min)
- Configurer des webhooks pour suivre les événements liés aux modèles (60 req/min)