# Jeton de validation

Les jetons de validation sont utilisés pour rattacher une identité Seald à :

  • un identifiant utilisateur noté userId dans l'application dans lequel le SDK est intégré ;
  • l'identifiant de votre application appId (que l'on retrouve dans l'interface d'administration).

Ils sont dérivés à partir de la validationKey qui doit être est récupérable depuis le tableau d'administration.

Il est utilisé lors de la création d'une identité.

# Définition d'un userLicenseToken

Ces jetons sont générés hors ligne à partir du userId de l'utilisateur pour qui on génère un jeton, de l'identifiant de votre application appId, ainsi que la validationKey et le validationKeyId.

Ce jeton de licence est généré avec un scrypt (opens new window), et est de la forme ${validationKeyId}:${nonce}:${token}, avec :

  • nonce un string aléatoire ;
  • token valant scrypt(`${userId}@${appId}-${validationKey}`, nonce) ;
  • scrypt utilisant comme paramètres :
    • N: 16384 ;
    • r: 8 ;
    • p: 1 ;
    • taille de sortie : 64 octets.

# Implémentation de référence

L'implémentation de référence est en Node.js :

En suivant cet exemple, il est normalement facile de réimplémenter cette génération dans d'autres langages. Si besoin, n'hésitez pas à nous contacter pour obtenir une assistance au développement d'une fonction équivalente dans un autre langage.

# Comment l'intégrer dans mon application

Un jeton de validation doit être généré pour un utilisateur avant la création de son identité Seald et après que le userId ait été assigné par l'application.

Usuellement cela intervient :

  • en retour du point d'API de validation du compte par le backend de l'application (validation de l'email par exemple) ;
  • dans un point d'API dédié authentifié accessible seulement après que le compte ait été validé par l'application.

# Sécurité des jetons de licence

La clé validationKey est secrète. Sa compromission peut engendrer deux effets :

  1. une utilisation usurpée des quotas de licences associés au compte développeur ;
  2. un écrasement de l'identité publique Seald associée à un utilisateur, ce qui peut engendrer un scénario de type Man-in-the-middle (opens new window) si d'autres précautions ne sont pas prises.

WARNING

Par conséquent, il est impératif qu'en environnement de production la génération des jetons de licence respecte les conditions suivantes :

  1. génération côté serveur du jeton ;
  2. génération seulement pour des utilisateurs authentifiés ;
  3. protection de la validationKey par des mesures périmétriques appropriées (au moins ne pas la mettre directement dans le code source de votre application, mais dans une variable d’environnement).