You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I decode this, there's no corresponding option to decode directly to base64. Decode gives me a string using the encoded bytes, but it contains some escaped character values and is not compatible with Buffer:
constdecodedPayload=jws.decode('eyJhbGciOiJIUzI1NiJ9.myPayloadBase64.rFU9W9o-1Mw3jEudDOFjQZHrxOOmMZdTRnLbXTL2VY8')// '�#��Z\u001at\u0016�{�'Buffer.from(decodedPayload,"utf8").toString("base64")//'77+9I++/ve+/vVoadBbvv71777+9'// should be 'myPayloadBase64='
My workaround right now is to not use decode at all. Instead, I just split('.')[1] and then require('base64-url') to decode the bytes or convert it to normal base64.
It would be much easier if I were able to pass the encoding I used to the decode method to get my base64 (or whatever other encoding) directly.
The problem is that the payload is decoded to a string, rather than a buffer. Looking at the VerifyStream implementation I think encoding support is fundamentally broken. It should probably be removed entirely, returning the raw payload bytes. I suppose for typ: 'JWT' it could still parse the payload as if it was a JSON-encoded object.
Activity
novemberborn commentedon Mar 16, 2018
The problem is that the payload is decoded to a string, rather than a buffer. Looking at the
VerifyStreamimplementation I think encoding support is fundamentally broken. It should probably be removed entirely, returning the raw payload bytes. I suppose fortyp: 'JWT'it could still parse the payload as if it was a JSON-encoded object.