IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Jetons JSON Web Token (JWT - RFC 7519) - PB de Signature


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 122
    Points : 136
    Points
    136
    Par défaut Jetons JSON Web Token (JWT - RFC 7519) - PB de Signature
    Bonjour,

    Dans le cadre d'un projet de serveur de WebService REST je voudrais mettre en place un échange de jetons JSON Web Token (JWT - RFC 7519).

    J'ai un problème au niveau de la signature du jeton. Je voudrais obtenir une signature conforme au HMACSHA256 utiliser comme exemple sur le site : https://jwt.io/

    J'utilise actuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSIGNATURE = Encode(HashChaîne(HA_HMAC_SHA_256, sHEAD + "." + sCLAIMS, "1234567890"), encodeBASE64)
    Mais je n'obtiens pas le même résultat qu'avec le simulateur du site : https://jwt.io/ en HS256.

    Merci, par avance, pour vos conseils.

    Cordialement.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5
    Points : 127
    Points
    127
    Par défaut
    Bonjour, je ne sais pas si tu as toujours besoin d'une réponse, mais dans le doute : les chaînes sont encodées en base64Url, pas juste base64 (lire l'introduction : https://jwt.io/introduction/).
    De plus dans la signature, header et payload sont encodés en base64Url, concaténés, hashés et le tout est réencodé en base64Url.

    Le code suivant donne le même résultat que le site jwt.io :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sHeader est une chaîne = "{""alg"":""HS256"",""typ"":""JWT""}"
     
    sPayload est une chaîne = "{""sub"":""1234567890"",""name"":""John Doe"",""iat"":1516239022}"
     
    sHeaderEncode est une chaîne = Replace(Encode(sHeader, encodeBASE64URL),"=","")
    sPayloadEncode est une chaîne = Replace(Encode(sPayload, encodeBASE64URL),"=","")
     
    sSignature est une chaîne = Replace(Encode(HashChaîne(HA_HMAC_SHA_256, sHeaderEncode + "." + sPayloadEncode, "secret"), encodeBASE64URL),"=","")
     
    sTokenFinal est une chaîne = sHeaderEncode + "." + sPayloadEncode + "." + sSignature

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 327
    Points : 788
    Points
    788
    Par défaut
    En effet, voilà la ligne qui me permet d'obtenir la signature:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :depaddingBase64(Encode(HashChaîne(HA_HMAC_SHA_256,sChaineACrypter,:secret),encodeBASE64URL))
    la fonction :depaddingBase64 permet de supprimer les signes égal, servant de padding.

    Egalement je vire les espaces dans les JSON au niveau des accolades et des virgules qui séparent les variables, car j'avais remarqué que les espaces n'étaient pas supprimés par WD et faussaient l'encodage. JsonVersChaine() permet désormais de faire un JSON sans caractères d'espacement via la constante psdMinifié, mais j'ai codé ça à l'époque ou cette fonction n'existait pas, je testerais bientôt avec cette fonction qui me fera gagner un peu de code si elle marche bien.

Discussions similaires

  1. Refresh et access token jwt
    Par kelinox dans le forum Android
    Réponses: 5
    Dernier message: 06/10/2017, 00h22
  2. [JavaScript] JSON Web Token JWT Tutoriel
    Par Echyzen dans le forum Contribuez
    Réponses: 0
    Dernier message: 03/06/2016, 17h51
  3. [Généralités] Retour JSON web service
    Par Atsibat dans le forum WinDev
    Réponses: 5
    Dernier message: 10/10/2013, 10h04
  4. jeton de sécurité-token
    Par Royade dans le forum Langage
    Réponses: 5
    Dernier message: 27/12/2012, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo