i am preparing a new training lab (WSO2) where the X-JWT-Assertion Header needs to be decoded and basically the Json payload needs to be in the body. Originally i have a backend service but that requires another instance. I saw that i could get the header into the response
{ \"copiedHeader\": \"{{request.headers.X-JWT-Assertion}}\" }
however, decoding the payload using :
{
"message": "Extracted user from custom JWT assertion header",
"userId": "{{#assign 'jwtPayload'}}{{base64 (regexExtract request.headers.X-JWT-Assertion '([^.]+)\\.([^.]+)\\.([^.]+)' group=2) decode=true}}{{/assign}}{{#assign 'claims'}}{{parseJson jwtPayload}}{{/assign}}{{claims.sub}}"
}
give 500
[ERROR] 1
26 java.lang.IllegalArgumentException: Illegal base64 character 5b
when i do this
{
"status": "success",
"userId": "{{#assign 'jwtSegments'}}{{split request.headers.[X-JWT-Assertion] '.'}}{{/assign}}{{#assign 'payloadSegment'}}{{jwtSegments.[1]}}{{/assign}}{{#assign 'jwtPayload'}}{{base64 payloadSegment decode=true}}{{/assign}}{{#assign 'claims'}}{{parseJson jwtPayload}}{{/assign}}{{claims.sub}}",
"apiName": "{{#assign 'jwtSegments'}}{{split request.headers.[X-JWT-Assertion] '.'}}{{/assign}}{{#assign 'payloadSegment'}}{{jwtSegments.[1]}}{{/assign}}{{#assign 'jwtPayload'}}{{base64 payloadSegment decode=true}}{{/assign}}{{#assign 'claims'}}{{parseJson jwtPayload}}{{/assign}}{{formData claims '
wso2.org/claims/apiname'}}"
}
there is no error but an empty payload
"status": "success",
"userId": "",
"apiName": ""
}
what are the right steps to decode this JWT
X-JWT-Assertion eyJ4NXQiOiJOR1k1T1dVNU5EVTNaakl6TjJVM1kyVTNNV1JqT0RkbFlUUXhaRE16TVRZMVpEbGxZemN4TWc9PSIsImtpZCI6IlEwNDliRzlqWVd4b2IzTjBMQ0JQVlQxWFUwOHlMQ0JQUFZkVFR6SXNJRXc5VFc5MWJuUmhhVzRnVm1sbGR5d2dVMVE5UTBFc0lFTTlWVk1qTlRrd056WTFOVGN3TmpJMU1qQTBNVGN3T1RBM05qTXpNVEU1T0RnNE5qVXhOVGM0T0RFeU5URTFNekF5TVRNeSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI4OWQ3MTVjNi0wZDNlLTQyOWYtYjIwYy1lOWJmYmM2ZmI3NjgiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9hcGluYW1lIjoiUGl6emFTaGFja0FQSSIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL2FwcGxpY2F0aW9udGllciI6IlVubGltaXRlZCIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL3ZlcnNpb24iOiIxLjAuMCIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL2tleXR5cGUiOiJTQU5EQk9YIiwiaXNzIjoid3NvMi5vcmdcL3Byb2R1Y3RzXC9hbSIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL2FwcGxpY2F0aW9ubmFtZSI6IkRlZmF1bHRBcHBsaWNhdGlvbiIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL2VuZHVzZXIiOiJhZG1pbkBjYXJib24uc3VwZXIiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9lbmR1c2VyVGVuYW50SWQiOiItMTIzNCIsInV1aWQiOiI5OTUyYjM2Ny05MmRjLTQzMWMtODRlNy02MGZhZWZlZWZkMGIiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9hcHBsaWNhdGlvblVVSWQiOiI5MzIwZjRhZS03MzgxLTRiOTEtOTEzZi0yYjkxN2RhZGYxOWIiLCJjbGllbnRfaWQiOiJkMWdtSm1JQTRTS3JZa3hkYjNOTTRpaXQ0Q29hIiwiaHR0cDpcL1wvd3NvMi5vcmdcL2NsYWltc1wvc3Vic2NyaWJlciI6ImFkbWluIiwiYXpwIjoiZDFnbUptSUE0U0tyWWt4ZGIzTk00aWl0NENvYSIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL3RpZXIiOiJVbmxpbWl0ZWQiLCJzY29wZSI6ImRlZmF1bHQiLCJleHAiOjE3ODc2NjA1NjIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL2FwcGxpY2F0aW9uaWQiOiIxIiwiaHR0cDpcL1wvd3NvMi5vcmdcL2NsYWltc1wvdXNlcnR5cGUiOiJBcHBsaWNhdGlvbl9Vc2VyIiwiaWF0IjoxNzg3NjU5NjYyLCJqdGkiOiIxNDQ2M2MzNy04ZDQ5LTRhNTQtODQ0ZC0xODJhNTVmZGY2YWYiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9hcGljb250ZXh0IjoiXC9waXp6YXNoYWNrXC8xLjAuMCJ9.azO/wET5wRF+zR/V9exHTMCDxxJRD5llqz15Hlj7V6t9/TfJJ1lgx4fADbkj2oO2qES02Je3JHIPOya7fkdl3mhdYpXdCSO6PgNNbrJwJ8Y5SIKeTtZ0h/82d2OVgiKE7kOK73QOBCkzth6/jpqEwUMyiBgVWAXLFmxdlO7qEq1f2LS25HEICodAVYfBEQQ/XfKeEpREN1f0vqOKynJZUaLo0z8Oq1jQ8UpmZSAYh6eJhjHtZQzlXj6EIEZVXhUXmTNAmNTpksar4rZcOLkMF+zfOA3RHhsktSdcXsPVbRt7M8K0dUXVWGT9NJ+oHzDktLtDxD6j/js+4X0NddEbRg