Cette série d’articles donne les bonnes pratiques concernant la gestion des droits d’accès à votre service au travers de ProAbono.
Introduction
Le problème
Lorsqu’un client souscrit à une offre, vous lui ouvrez par ailleurs des droits d’accès à votre service. Ces droits d’accès découlent en grande partie de l’offre choisie et peuvent être, selon les différentes caractéristiques qui la composent plus ou moins complexe.
Ex : Si vous avez une offre avec une caractéristique qui donne le droit à vos clients d’ajouter jusqu’à 5 collaborateurs, à chaque modification du nombre de collaborateurs, il faut s’assurer que le nombre de collaborateurs correspond bien au nombre défini.
Cette gestion parait simple, mais elle ne l’est pas toujours. En effet :
- à chaque nouvelle offre ou modification d’une offre existante, il faudra revoir la gestion des droits en fonction.
- il faut aussi considérer que quand une offre est mise à jour, les abonnements associés à l’offre en cours ne sont pas mis à jour. Vous devrez en quelques sortes gérer, des droits différents pour chaque « version » de votre offre.
- ces droits dépendent aussi d’autres informations. Par exemple, de la créance en cours, car dans la plupart des cas, on veut suspendre l’accès au service d’un client qui ne paye pas ces factures, etc.
Tous ces cas peuvent se produire à tout moment et il faudra les gérer de manière fiable, sous peine de surcharger votre support ou d’avoir des petits malins qui utilisent votre service sans payer.
La solution
Récupérer l’information grâce à ProAbono. En effet, le cycle de vie et les usages d’un abonnement ainsi que les informations de paiements sont gérées par ProAbono. Il vous suffit de nous demander à n’importe quel moment l’intégralité des droits d’un client depuis API.
Ils sont retournés par la ressource Usage de l’API Live. Le nom de cette ressource vient de la facturation à l’usage, car elle permet de gérer non seulement des droits, mais de la facturation à montant variable. Les Usages sont les valeurs de chaque Caractéristique pour un abonnement donné.
Implémentation
Il y a plusieurs manières de mettre en place cette synchronisation selon votre architecture.
Real-Time
- Requêter les droits de l’utilisateur à chaque accès à une fonctionnalité
- Recommandé dans le cadre d’un POC, pour valider la synchronisation des droits
- Avantage : rapide à coder
- Inconvénient : même si l’API de ProAbono est rapide, cet appel supplémentaire peut nuire à l’expérience utilisateur si votre service requiert une forte réactivité
Avec caching
- Requêtez l’intégralité des droits de l’utilisateur lorsqu’il se connecte et stockez les dans un cache ou une session
- Recommandé pour la plupart des applications connectées
- Avantage : aucun souci d’expérience utilisateur. Évite les désagréments si votre serveur expérimente des problèmes de connexion ponctuels avec des API
- Inconvénient : nécessite de brancher les webhooks/redirections afin de déclencher une synchronisation au cas où les droits changeraient.
Avec cache glissant
- Même principe que le caching, mais les données ont une durée de vie au bout de laquelle il faut rafraîchir les droits en les requétant à nouveau
- Recommandé si vous avez des inquiétudes sur votre synchronisation ou si vous n’avez pas mis en place de webhooks
- Avantage : aucun souci d’expérience utilisateur. Évite les désagréments si votre serveur expérimente des problèmes de connexion ponctuels avec des API
- Inconvénient : pour avoir une synchro en temps-réel, il est préférable de brancher les webhooks/redirections, au cas où les droits changeraient
Base de données/LDAP
- Si vous avez déjà un système de droits, vous avez juste une fonction à coder afin de synchroniser les droits retournés par ProAbono avec les droits de votre application
- Non-recommandé : avoir deux référentiels pour les droits est une source de problèmes.
- Avantage : vous n’avez pas à modifier votre applicatif existant
- Inconvénient : deux référentiels pour les droits vous obligent à mettre en place des vérifications périodiques, une synchro plus complexe, et vous obligent à gérer de l’arbitrage
- Tout comme avec le caching, il faut brancher les webhooks/redirections afin de déclencher une synchronisation au cas où les droits changeraient
Webhooks
Les droits de l’utilisateur peuvent changer même s’il n’est pas connecté. Si son abonnement s’interrompt par exemple. Les webhooks sont là pour notifier votre serveur à tout moment.
Voici la liste des webhooks qui peuvent déclencher une modification des droits :
- Client – suspendu
- Client – activé
- Abonnement – démarré
- Abonnement – suspendu par un agent
- Abonnement – redémarré
- Abonnement – interrompu (pas d’info de paiement)
- Abonnement – interrompu (défaut de paiement)
- Abonnement – résilié
- Abonnement – terminé
- Abonnement – caractéristiques modifiées
- Abonnement – démarré comme upgrade
- Abonnement – date d’échéance modifiée
Notes que nous recommandons vivement de tous les configurer sur le même endpoint et de déclencher une unique fonction de synchronisation globale pour ce client
Traduction : récupérer ses droits dans ProAbono et remplacer bêtement tous ses droits dans votre application. Pourquoi ? Parce que si vous commencez à gérer chaque cas, vous allez y passer un temps colossal, oubliez certains cas rares, et votre implémentation va casser le jour où votre business model évolue. On vous aura prévenu.
Redirections
Oui mais… les webhooks de ProAbono sont asynchrones. Ils sont envoyés avec un différé qui peut atteindre quelques minutes.
Ce n’est pas un souci pour 95% des événements qui nous intéressent, mais ça peut gêner l’expérience utilisateur si, à l’issue de son paiement, il n’a pas immédiatement accès au service.
Pour ces cas-là, il faut déclencher la synchronisation sur les redirections d’URL. Ça tombe bien : les paramètres retournés suite à une redirection sont précisément ceux qui servent à récupérer les droits de l’utilisateur !
Les redirections à mettre en place pour garantir une synchro sont :
- Validation sans paiement
- Abonnement gratuit
- Abonnement supplémentaire
- Changement d’offre
- Options modifiées
- Paiement
- Succès
- En cours
Les autres redirections ne sont pas liées à la modification des droits courant de l’utilisateur.
Nous recommandons vivement de mettre en place tous les cas sans réfléchir : vous n’avez peut-être pas encore d’offre gratuite ou de paiement en différé (ex : le prélèvement SEPA), mais le jour où votre manager décide de le mettre en place, vous aurez la bonne surprise de constater que votre intégration fonctionne déjà !
Prochain chapitre : Comment gérer les droits d’accès à votre service ? (1/3)>