Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) ABN AMRO Create Signed JSON Web TokenDemonstrates how to create a signed JWT to be used for authenticating requests to the ABN AMRO REST API's. For more information, see https://developer.abnamro.com/get-started#headingFive
load ./chilkat.dll # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # Create public/private key pair (RSA) set rsa [new_CkRsa] # Generate a 2048-bit key. set success [CkRsa_GenerateKey $rsa 2048] if {$success != 1} then { puts [CkRsa_lastErrorText $rsa] delete_CkRsa $rsa exit } # Export the key to PEM files. # Write one PEM file for the private key, and one for the public key. # privkey is a CkPrivateKey set privkey [CkRsa_ExportPrivateKeyObj $rsa] set success [CkPrivateKey_SavePemFile $privkey "qa_data/pem/abnAmroPrivateKey.pem"] # pubkey is a CkPublicKey set pubkey [CkRsa_ExportPublicKeyObj $rsa] set success [CkPublicKey_SavePemFile $pubkey 1 "qa_data/pem/abnAmroPublicKey.pem"] # Note: Please share your public key along with your app name and developer email id at api.support@nl.abnamro.com. # Token generation will not work unless public key is associated with your app. # Create the JWT. set jwt [new_CkJwt] # Create the header: # { # "typ": "JWT", # "alg": "RS256" # } set jsonHeader [new_CkJsonObject] CkJsonObject_UpdateString $jsonHeader "typ" "JWT" CkJsonObject_UpdateString $jsonHeader "alg" "RS256" # Create the payload: # { # "nbf": 1499947668, # "exp": 1499948668, # "iss": "me", # "sub": "anApiKey", # "aud": "https://auth-sandbox.abnamro.com/oauth/token" # } set jsonPayload [new_CkJsonObject] set curDateTime [CkJwt_GenNumericDate $jwt 0] # Set the "not process before" timestamp to now. set success [CkJsonObject_AddIntAt $jsonPayload -1 "nbf" $curDateTime] # Set the timestamp defining an expiration time (end time) for the token # to be now + 1 hour (3600 seconds) set success [CkJsonObject_AddIntAt $jsonPayload -1 "exp" [expr $curDateTime + 3600]] CkJsonObject_UpdateString $jsonPayload "iss" "me" CkJsonObject_UpdateString $jsonPayload "sub" "anApiKey" CkJsonObject_UpdateString $jsonPayload "aud" "https://auth-sandbox.abnamro.com/oauth/token" # Produce the smallest possible JWT: CkJwt_put_AutoCompact $jwt 1 set jwtStr [CkJwt_createJwtPk $jwt [CkJsonObject_emit $jsonHeader] [CkJsonObject_emit $jsonPayload] $privkey] if {[CkJwt_get_LastMethodSuccess $jwt] != 1} then { puts [CkJwt_lastErrorText $jwt] delete_CkRsa $rsa delete_CkJwt $jwt delete_CkJsonObject $jsonHeader delete_CkJsonObject $jsonPayload exit } delete_CkPrivateKey $privkey delete_CkPublicKey $pubkey # Here is the JWT: puts "$jwtStr" delete_CkRsa $rsa delete_CkJwt $jwt delete_CkJsonObject $jsonHeader delete_CkJsonObject $jsonPayload |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.