DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Nouveauté WINDEV, WEBDEV et WINDEV Mobile 2024 !
Aide / WLangage / Fonctions WLangage / Communication / Gestion du protocole OAuth 2.0
  • Propriétés spécifiques à la description des variables de type JWTParamètres:
  • Exemple de récupération des paramètres d'un fichier JSON Google
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
JWTParamètres (Type de variable)
En anglais : JWTParameters
Le type JWTParamètres permet de définir toutes les informations nécessaires pour effectuer une authentification JWT. Les caractéristiques de ce type peuvent être définies et modifiées à l'aide de différentes propriétés WLangage.
Un token JWT se compose de 3 chaînes de caractères séparées par un "." :
  • La première partie, l'en-tête, est un JSON encodé en base64url qui décrit le type de token et l'algorithme utilisé pour la signature.
  • La seconde partie, le payload, est un JSON encodé en base64url qui contient les informations à transmettre. Ce JSON peut contenir des clefs prédéfinies qui permettent de donner des informations supplémentaires sur le token (comme la date d'expiration, la cible, le sujet, etc.).
  • La dernière partie, la signature, permet de s'assurer de l'authenticité du token. Cette signature est générée à partir des 2 premières clefs avec un algorithme particulier (HS256 par exemple avec une clef secrète).
Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable.
Exemple
JWTParams est un JWTParamètres
JWTParams.URLToken = "https://oauth2.googleapis.com/token"
JWTParams.Scope = "https://www.googleapis.com/auth/firebase.messaging"
JWTParams.Emetteur = "firebase-adminsdk-m4j35@notifpushandroid28.iam.gserviceaccount.com"
JWTParams.Cryptage = jwtRS256
JWTParams.IDCléPrivée = "8ae8fe7c76c9f6dbebaf5cba066e14ac26165277"

JWTParams.ParamètresSupplémentaires = [
sub=Test
nom=TOTO
email=toto@gmail.com
]

JWTParams.CléPrivée = [
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDLqXc2nE0iTK++
puV2N+H2DoXLjwi36y84LRdLFbfT7BIybOBehIhfGRNY3NsdCShw2VhGGHn1sWl5
2+w6Y2VCZqbMG0XfowdVq1TExyuIeEcRhieiG4EMjP6+yIvwf7rIkmjmflisHBks
iXNeBx1CwvfpafU3ssMAaQ+F1z8LhN1w5REAx8+nALMFOoGHK83edutxesqggpyk
bmcKM8R18ty9au6/sTcOXmnCy</span>KnSk8kOGvvjSvQG3UVWIKUrXdRxGami+Z7EhW
YBJRMlK1YFOzTLJo1kRebUBvZxMXCWxwYjj3uLIk9a/EtTUEVvSvSxxy7KTGK5Xi
9h8hf9UdAgMBAAECggEAD/6oMS7HVAlHyCZdYRJ0eZmcYmdCXQdodvX7nVcAT/F7
YGByopmwCB/1CAaYYshkV7CKIT8s3OHpEbv26oMB5dwj/2Wo8C5ilhTVnHqz7Yzc
sACkPjQAx5aPLzaa3vF5HuV4vZlwp1uxknDdEaZnYuXjCH7c1loAvJiDspQ8DFBn
8KauP5ww3hHIldLgdRu0TCNYIZnsNyTZRKd5PTZOvRtuHJGtYhrc4napcG2GS3ej
Nj7Uv23CxdbIFCu4J2C7BZdxNbT05koqZoAdmemVg6dnVXctVZSlIjZ4sE/6Dl7h
mlrmaV3TJdHuZTIvsDDvA2b7ujAxWnT6CKo31qSXQQKBgQD9T0UC+inzPTSlK6pr
RaxpTHW0eB9S6Q5/sT5I1VNYoRYe3t2MRcypDu</span>VIBZwywPy0WTcrXU8VXawR9a
0Cn3XXlMUe1bjIvuX5/3M8NgPihn7U3b4JeVpExggFioJPfktOELoaL5Dcaw6LRB
abdpirn9ZUtpmHZG+nNCfT+EjQKBgQDN0zUsZrAkBcq6dZEqzFt2SOh7UP4RwEED
D7NU1Y1P27e51zOcSD4IiQ5vuvxnRjB00QmAwk3ycDLMOd4GrNwtjCpXp5D+qkut
Ct5XZUuP+SMuVDhLhwCfw1l7LQvQJQDFGNZW9Bb9mNiKasWSDLDK1xNgv4uq9OQv
vZMzV2KW0QKBgQCB/wlaosmek92NmmAmFyaJD30kdbUVlpcjPvHI7PmN9XVluFgY
YcXLSOSBd886wae+H0KAjhD0zDmUPyH5N/Uhhm32leDq57D0T0zHz1/H535S/3zC
h3sjh6LOr29QM1CopY8MqhH6IHDEX1gKbdd7qX8TpMVT1rN0b5lxGNfdDQKBgFdb
1a3Kx+gCLVGGpN6tbgR+XW45qhyOpQlPmKXhHeFPOGPAWz9xyiKFSYNSsd6Dg/2Q
25+y2LKVvHnB9eKPa8RJQY+Cp5/vV79SZZxieffZnn0DcgFcg39LwqbtL55gljsR
l6fAYiGwxfe56bFbgY4WSzs9EWK2HkPFCr030biBAoGBAIOMvTq4Piqd2P/ShAoG
33xcBTwrmVKutEZH96BU77/IdD6B7s4jP0v7n9omdhttcVtBl5KThmNpvMAhbtb7
7coQ/ynoCpRZROS58hHhYQjIIuQO2RAsxBnaXP1gUFjQr9huDtgT9CDr8PoIIwYV
yYMBbJxhKhlBY9gYByl5G1qO
-----END PRIVATE KEY-----
]

MonToken est un AuthToken = AuthIdentifie(JWTParams)
SI MonToken.Valide ALORS
Info("ok")
SINON
Info(ErreurInfo(errComplet))
FIN
Propriétés

Propriétés spécifiques à la description des variables de type JWTParamètres:

Les propriétés suivantes peuvent être utilisées pour manipuler une authentification JWT :
Nom de la propriétéType manipuléEffet
CertificatCertificatCertificat à utiliser pour la signature du JWT. Ce certificat est utilisé uniquement pour le cryptage de type jwtRS256.
CléPrivéeChaîne de caractèresTexte représentant la clé privée. Ce texte commence par "-----BEGIN PRIVATE KEY-----" ou "-----BEGIN RSA PRIVATE KEY-----".
Cette propriété n'est pas nécessaire si la propriété Certificat est spécifiée.
CryptageConstante de type EntierAlgorithme de cryptage utilisé :
  • jwtHS256 : Algorithme HS256 (correspond à un cryptage de type HMAC combiné à un cryptage de type SHA 256).
  • jwtRS256 : Algorithme RS256 (correspond à un cryptage de type RSA combiné à un cryptage de type SHA 256).
EmetteurChaîne de caractèresEmetteur pour l’authentification.
IDCléPrivéeChaîne de caractèresCode d'accès secret de l'application. Ce code est donné par le service lors de l'enregistrement de l'application.
ParamètresSupplémentairesChaîne de caractèresParamètres supplémentaires sur le token (utilisés dans le payload).
ScopeChaîne de caractèresPermissions demandées. Les valeurs possibles sont spécifiques au service Web utilisé.
URLTokenChaîne de caractèresURL de récupération du token d'accès à utiliser (seconde URL du standard OAuth 2.0).
Remarques

Exemple de récupération des paramètres d'un fichier JSON Google

MonToken est un AuthToken
JWTParams est un JWTParamètres

// Récupération des données d'un fichier JSON Google
JWTParams = JsonVersJWTParamètres("C:\.<fichier json de Google.>.\wd-mail-324009-72613ff8bc14.json")
JWTParams.Scope = "https://mail.google.com"

MonToken = AuthIdentifie(JWTParams)
SI PAS MonToken.Valide ALORS
    Erreur(ErreurInfo(), HTMLVersTexte(MonToken.RéponseServeur))
    RETOUR
FIN
ToastAffiche("Connexion réussie", toastCourt, cvBas, chCentre)   
// Suite du traitement, utilisation de MonToken...

// JsonVersJWTParamètres est ici une procédure interne,
// cela pourrait être une procédure locale, globale, une méthode de classe...

      PROCÉDURE INTERNE JsonVersJWTParamètres(sNomFichierJS, nCleCryptage est un entier = jwtRS256) : JWTParamètres       
         jwtDepuisJsOAuth est un JWTParamètres
         jsOAuth est un JSON = fChargeBuffer(sNomFichierJS)
         jwtDepuisJsOAuth.URLToken = jsOAuth.token_uri..Valeur
         jwtDepuisJsOAuth.Emetteur = jsOAuth.client_email..Valeur
         jwtDepuisJsOAuth.IDCléPrivée = jsOAuth.private_key_id..Valeur
         jwtDepuisJsOAuth.CléPrivée = jsOAuth.private_key..Valeur
         jwtDepuisJsOAuth.Scope = jsOAuth.universe_domain..Valeur
         jwtDepuisJsOAuth.Cryptage = nCleCryptage
         RENVOYER jwtDepuisJsOAuth
      FIN
Version minimum requise
  • Version 2024
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 07/03/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale