release. Cet événement est émis côté client, ce qui signifie qu'un utilisateur ou un script peut le reproduire manuellement pour débloquer du contenu sans autorisation.#Sécuriser le déblocage de contenu avec une signature JWS
#Le problème
Par défaut, lorsqu'un visiteur débloque un article premium, le widget Access émet un événement
La signature JWS (JSON Web Signature) permet de prouver que le déblocage provient bien de Poool et qu'il n'a pas été falsifié. Vous offrant ainsi la possibilité de débloquer ou non l'article côté serveur.
#Activer et créer une paire de clés de signature
Afin de créer une paire de clés qui permettra de lire et de signer le JWS, il faut vous rendre
dans la section
Réglages de Access dans votre Dashboard puis activer la fonctionnalité Activer l'authentification par clé de signature :
Il vous suffit ensuite de mettre la clé publique fournie dans le dashboard dans vos variables d'environnement. Rien n'est à configurer au niveau du SDK.
La clé privée quant à elle, reste de notre côté et permettra de signer les événements.
Il est possible à tout moment de re-créer une paire de clés, ce qui aura pour conséquence d'invalider les anciennes.
#Authentifier un événement release
L'authentification de la signature doit se faire dans le callback de l'event
release.ℹ️ Attention - Pour garantir l'intégrité de votre clé de vérification, il est important de réaliser
la vérification uniquement côté serveur, et de mettre la clé dans vos variables d'environnement.
#Côté client
#Côté serveur
Le payload du token contient les éléments suivants:
- Arguments: { releaseSignature: { iss: 'poool', aud: appId, jti: String }
Le champ
jti est un identifiant unique généré par Poool pour chaque événement release. Il est important de le stocker côté serveur afin de garantir qu'un même événement ne puisse pas être réutilisé pour débloquer plusieurs articles.#Expiration (optionnelle)
Il est possible d'activer et définir une durée de validité (
expiry) du token dans votre dashboard.Cette option vous permet d'assurer que le token sera uniquement disponible pour la durée de vie définie à partir du clic déclenchant l'event
release.
L'expiration du token peut représenter une alternative au jti vous permettant d'éviter de stocker un id en base de données.