Wiki SicpaJWT

Vous trouverez, dans l'onglet Fichiers, la DLL SicpaJWT permettant de générer des tokens JWT pour les systèmes ne supportant pas l'authentification (ex : PDA) ou ceux n'ayant pas accès à une connexion internet.


Préalables

Clé secrète
Pour utiliser la DLL, vous aurez besoin de la clé secrète SICPA encodée en base64.
  • Pour obtenir la clé, vous pouvez la demander à Alexandre Journaux ou Thierry Heirman
  • Pour encoder la clé en Base64, vous pouvez le faire soit via l'application DevToys (section Encodeurs / Decodeurs, item Texte Base64), soit via le site web https://www.base64encode.org/

Ajouter la référence vers la DLL

Pour ajouter la référence au projet :
  • Télécharger la DLL SicpaJWT.dll dans l'onglet Fichiers
  • Sélectionner le menu Projet puis cliquer sur Ajouter une référence
  • Dans la fenêtre qui s'ouvre, cliquer sur Parcourir et rechercher la DLL fraichement téléchargée
  • Terminer en cliquant sur OK

Utiliser la DLL dans le code

Pour utiliser la DLL, vous n'avez besoin que d'importer les deux espaces de noms suivants:

using SicpaJWT.Managers;
using SicpaJWT.Models;

1. Comment générer un token via la DLL SicpaJWT ?

Pour générer un token, il vous faut :
  • la clé secrète Sicpa (voir Préalables)
  • l'algorithme de cryptage du token : HS384
  • une durée d'expiration du token en jours : par exemple, 3650 jours pour une expiration à 10 ans
  • le nom du SI à renseigner dans la variable ldap

Exemple :

    String secretKey         = "my-secret-key-encoded-in-base-64";
    String securityAlgorithm = "HS384";
    String ldap              = "Sicpa_Interop";
    UInt64 expiresDays       = 3650;
    Claim[] claims           = new Claim[] { new Claim("ldap", ldap) };

    // je crée mon JWTContainerModel
    JWTContainerModel jwtContainerModel = new JWTContainerModel(expiresDays, securityAlgorithm, claims, secretKey);

    // je crée mon authentifieur
    IAuthService authService = new JWTService(secretKey);

    // je génère mon token
    String token = authService.GenerateToken(jwtContainerModel);

    // si mon token est valide, je l'affiche
    if (!authService.IsTokenValid(token))
        throw new UnauthorizedAccessException();
    else 
        Console.WriteLine(token);

2. Comment valider un token via la DLL SicpaJWT ?

Pour générer un token, il vous faut :
  • la clé secrète Sicpa (voir Préalables)
  • un token !!

Exemple :

    String secretKey = "my-secret-key-encoded-in-base-64";
    String token     = "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJsZGFwIjoiU2ljcGFfV2ViRGlzdHJpIiwibmJmIjoxNjY5MjA3NTgzLCJleHAiOjE5ODQ1Njc1ODIsImlhdCI6MTY2OTIwNzU4M30.yFe2CLAOsHlmudUfD5zEc8RyVjU3qkKwQdWqLT6j04Ti45Zlmc63tRHVBiatFsRR";

    // je crée mon authentifieur
    IAuthService authService = new JWTService(secretKey);

    // j'affiche la validité du token
    if (!authService.IsTokenValid(token))
        Console.WriteLine("token is not valid");
    else 
        Console.WriteLine("token is valid");