-
-
Save ysbaddaden/1063d0aa671cb3aab2f7e842cd9dcfb4 to your computer and use it in GitHub Desktop.
WINDEV: create JWT with HS256 signature
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Crée un JSON Web Token pour l'extranet, signé via HMAC SHA 256, permettant | |
// d'identifier le CaC sur l'extranet comme utilisateur ayant accès à toutes les | |
// données. | |
PROCÉDURE CréerTokenExtranet() | |
// header du token (algorithm, type) : | |
taHeader est un tableau associatif de chaînes | |
taHeader["alg"] = "HS256" | |
taHeader["typ"] = "JWT" | |
bHeader est un Buffer | |
sHeader est une chaîne | |
bHeader = Sérialise(taHeader, bHeader, psdJSON) | |
sHeader = Encode(bHeader, encodeBASE64URL) | |
// payload du token (date création, date expiration, ...) : | |
taPayload est un tableau associatif d'entiers | |
taPayload["iat"] = DateHeureVersEpoch(DateHeureSys()) // date/heure de création du token | |
taPayload["exp"] = DateHeureVersEpoch(DateHeureSys() + 2 * 60 * 60) // date/heure d'expiration du token (valide 2 heures) | |
taPayload["member_id"] = 0 // utilisateur 0 => accès complet | |
bPayload est un Buffer | |
sPayload est une chaîne | |
Sérialise(taPayload, bPayload, psdJSON) | |
sPayload = Encode(bPayload, encodeBASE64URL) | |
// signature du token (via clé secrète) : | |
sSecret est une chaîne = "somesecret" // clé à définir avec l'extranet | |
sToken est une chaîne = sHeader + "." + sPayload | |
bSignature est un buffer = HashChaîne(HA_HMAC_SHA_256, sToken, sSecret) | |
sSignature est une chaîne = Encode(bSignature, encodeBASE64URL) | |
sJWT est une chaîne = sToken + "." + sSignature | |
RENVOYER sJWT |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment