我正在使用JOSE package与Elixir合作。我有一个ALB that is using the Authentication Listener rule,在x-amzn-oidc-data
中获取的数据应该是包含用户声明的JWT。但是,尽管该值主要采用JWT格式,但它是base64 URL编码的,但带有填充。因此,JOSE无法验证大多数传入的令牌(如果令牌到达时没有填充,则JOSE会验证它没有问题)。
我认为我可以通过简单地从标头,有效负载和签名中的令牌中删除=
字符来解决此问题,但是似乎没有任何组合。
我已经使用jwt.io尝试调试令牌,并且如果我尝试从有效载荷中剥离=
个字符(仅?),它会抱怨签名无效。 >。但是,我尝试使用Python JOSE library和Javascript JOSE library验证令牌,并且两者都能够。同样,如果我从有效负载中删除填充字符,则这两个库都告诉我签名验证失败。我必须将其保留下来以便签名通过。
是否可以将令牌标记为不包含填充的格式,并且可以通过Elixir JOSE包进行验证?我试图反向工程这些库如何在其他库失败时解码令牌,但是我没有任何运气。
仅是一个可视示例,这就是令牌的外观
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA
但是ALB向我发送了类似的内容(请注意有效负载和签名中添加的填充字符)
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0==.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA==