无法验证来自AWS ALB身份验证的JWT

时间:2020-02-16 08:06:49

标签: amazon-web-services jwt elixir

我正在使用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 libraryJavascript JOSE library验证令牌,并且两者都能够。同样,如果我从有效负载中删除填充字符,则这两个库都告诉我签名验证失败。我必须将其保留下来以便签名通过。

是否可以将令牌标记为不包含填充的格式,并且可以通过Elixir JOSE包进行验证?我试图反向工程这些库如何在其他库失败时解码令牌,但是我没有任何运气。

仅是一个可视示例,这就是令牌的外观

eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA

但是ALB向我发送了类似的内容(请注意有效负载和签名中添加的填充字符)

eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0==.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA==

0 个答案:

没有答案