ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

New WINDEV, WEBDEV and WINDEV Mobile 2024 feature!
Help / WLanguage / WLanguage functions / Communication / Managing the OAuth 2.0 protocol
  • Properties specific to JWTParameters variables:
  • Getting parameters from a Google JSON file
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
JWTParameters (Variable type)
In french: JWTParamètres
The JWTParameter type is used to define all the data required for JWT-based authentication. You can define and change the characteristics of this type using different WLanguage properties.
A JSON Web Token (JWT) consists of 3 strings separated by dots ("."):
  • The first part, the header, is a Base64Url-encoded JSON that describes the token type and the algorithm used for signing.
  • The second part, the payload, is a Base64Url-encoded JSON containing the claims. This JSON can contain predefined claims that provide additional information about the token (expiration time, audience, subject, etc.).
  • The last part, the signature, ensures the token's authenticity. This signature is generated from the first 2 segments using a specific algorithm (e.g., HS256 with a secret key).
Remark: For more details on the declaration of this type of variable and the use of WLanguage properties, see Declaring a variable.
Example
JWTParams is JWTParameters
JWTParams.TokenURL = "https://oauth2.googleapis.com/token"
JWTParams.Scope = "https://www.googleapis.com/auth/firebase.messaging"
JWTParams.Issuer = "firebase-adminsdk-m4j35@notifpushandroid28.iam.gserviceaccount.com"
JWTParams.Encryption = jwtRS256
JWTParams.PrivateKeyID = "8ae8fe7c76c9f6dbebaf5cba066e14ac26165277"

JWTParams.AdditionalParameters = [
sub=Test
nom=TOTO
email=toto@gmail.com
]

JWTParams.PrivateKey = [
-----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-----
]

MyToken is AuthToken = AuthIdentify(JWTParams)
IF MyToken.Valid THEN
Info("ok")
ELSE
Info(ErrorInfo(errFullDetails))
END
Properties

Properties specific to JWTParameters variables:

The following properties can be used to handle a JWT-based authentication mechanism:
Property nameType usedEffect
AdditionalParametersCharacter stringAdditional token parameters (used in the payload).
CertificateCertificateCertificate to be used for the token signature. This certificate is only used for jwtRS256 encryption.
EncryptionInteger constantEncryption algorithm used:
  • jwtHS256: HS256 algorithm (HMAC with SHA-256).
  • jwtRS256: RS256 algorithm (RSA signature with SHA-256).
IssuerCharacter stringAuthentication issuer.
PrivateKeyCharacter stringText representing the private key. This text starts with "-----BEGIN PRIVATE KEY-----" or "-----BEGIN RSA PRIVATE KEY-----".
This property is not required if the Certificate property has been set.
PrivateKeyIDCharacter stringSecret application access code. This code is provided by the service when registering the application.
ScopeCharacter stringRequested permissions. The possible values are specific to the web service used.
TokenURLCharacter stringURL for retrieving the access token to use (second URL of OAuth 2.0 standard).
Remarks

Getting parameters from a Google JSON file

MyToken is AuthToken
JWTParams is JWTParameters

// Get data from a Google JSON file
JWTParams = JSONToJWTParameters("C:\.<Google JSON file.>.\wd-mail-324009-72613ff8bc14.json")
JWTParams.Scope = "https://mail.google.com"

MyToken = AuthIdentify(JWTParams)
IF NOT MyToken.Valid THEN
    Error(ErrorInfo(), HTMLToText(MyToken.ServerResponse))
    RETURN
END
ToastDisplay("Connection successful", toastShort, vaBottom, haCenter)   
// Rest of the process, use of MyToken...

// Here, JSONToJWTParameters is an internal procedure,
// it could be a local procedure, a global procedure, a class method, etc...

      INTERNAL PROCEDURE JSONToJWTParameters(sJSFileName, nEncryptionKey is int = jwtRS256): JWTParameters       
         jwtFromJsOAuth is JWTParameters
         jsOAuth is JSON = fLoadBuffer(sJSFileName)
         jwtFromJsOAuth.TokenURL = jsOAuth.token_uri..Value
         jwtFromJsOAuth.Issuer = jsOAuth.client_email..Value
         jwtFromJsOAuth.PrivateKeyID = jsOAuth.private_key_id..Value
         jwtFromJsOAuth.PrivateKey = jsOAuth.private_key..Value
         jwtFromJsOAuth.Scope = jsOAuth.universe_domain..Value
         jwtFromJsOAuth.Encryption = nEncryptionKey
         RETURN jwtFromJsOAuth
      END
Minimum version required
  • Version 2024
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 03/07/2024

Send a report | Local help