Lianja
Lianja
ABN AMRO Create Signed JSON Web Token
See more ABN AMRO Examples
Demonstrates how to create a signed JWT to be used for authenticating requests to the ABN AMRO REST API's.Chilkat Lianja Downloads
llSuccess = .F.
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Create public/private key pair (RSA)
loRsa = createobject("CkRsa")
// Generate a 2048-bit key.
loPrivkey = createobject("CkPrivateKey")
llSuccess = loRsa.GenKey(2048,loPrivkey)
if (llSuccess = .F.) then
? loRsa.LastErrorText
release loRsa
release loPrivkey
return
endif
// Export the key to PEM files.
// Write one PEM file for the private key, and one for the public key.
llSuccess = loPrivkey.SavePemFile("qa_data/pem/abnAmroPrivateKey.pem")
loPubkey = createobject("CkPublicKey")
loPrivkey.ToPublicKey(loPubkey)
llSuccess = loPubkey.SavePemFile(.T.,"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.
loJwt = createobject("CkJwt")
// Create the header:
// {
// "typ": "JWT",
// "alg": "RS256"
// }
loJsonHeader = createobject("CkJsonObject")
loJsonHeader.UpdateString("typ","JWT")
loJsonHeader.UpdateString("alg","RS256")
// Create the payload:
// {
// "nbf": 1499947668,
// "exp": 1499948668,
// "iss": "me",
// "sub": "anApiKey",
// "aud": "https://auth-sandbox.abnamro.com/oauth/token"
// }
loJsonPayload = createobject("CkJsonObject")
lnCurDateTime = loJwt.GenNumericDate(0)
// Set the "not process before" timestamp to now.
llSuccess = loJsonPayload.AddIntAt(-1,"nbf",lnCurDateTime)
// Set the timestamp defining an expiration time (end time) for the token
// to be now + 1 hour (3600 seconds)
llSuccess = loJsonPayload.AddIntAt(-1,"exp",lnCurDateTime + 3600)
loJsonPayload.UpdateString("iss","me")
loJsonPayload.UpdateString("sub","anApiKey")
loJsonPayload.UpdateString("aud","https://auth-sandbox.abnamro.com/oauth/token")
// Produce the smallest possible JWT:
loJwt.AutoCompact = .T.
lcJwtStr = loJwt.CreateJwtPk(loJsonHeader.Emit(),loJsonPayload.Emit(),loPrivkey)
if (loJwt.LastMethodSuccess = .F.) then
? loJwt.LastErrorText
release loRsa
release loPrivkey
release loPubkey
release loJwt
release loJsonHeader
release loJsonPayload
return
endif
// Here is the JWT:
? lcJwtStr
release loRsa
release loPrivkey
release loPubkey
release loJwt
release loJsonHeader
release loJsonPayload