【问题标题】:Quarkus verify JWT signature from AWS Application Load BalancerQuarkus 验证来自 AWS Application Load Balancer 的 JWT 签名
【发布时间】:2022-06-17 05:31:22
【问题描述】:

我正在使用 AWS Elastic Load Balancer 对用户进行身份验证,它会对用户声明进行签名,以便应用程序可以验证签名并验证声明是由负载均衡器发送的,如下所述:

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-authenticate-users.html#user-claims-encoding

要验证签名,需要请求位于以下位置的公钥:

https://public-keys.auth.elb.region.amazonaws.com/key-id

请注意,key-id 是动态的,并且在 kid 字段中沿标头上的 JWT 发送。

{
   "alg": "algorithm",
   "kid": "12345678-1234-1234-1234-123456789012",
   "signer": "arn:aws:elasticloadbalancing:region-code:account-id:loadbalancer/app/load-balancer-name/load-balancer-id", 
   "iss": "url",
   "client": "client-id",
   "exp": "expiration"
}

在应用程序级别,我想使用 Quarkus 和 smallrye-jwt 来验证 JWT。 阅读指南:

https://quarkus.io/guides/security-jwt#configuration-reference

有接受 URL 的配置 mp.jwt.verify.publickey.location,但是当来自 AWS 的公钥 URL 需要 key-id 时,我该如何配置它 要从 JWT 标头中提取?

【问题讨论】:

    标签: jwt quarkus amazon-elb microprofile smallrye


    【解决方案1】:

    我在 docker secrets 中遇到了类似的字符串值问题。我最终编写了自己的 docker 拦截器,我在下面的指南中找到了它。

    https://quarkus.io/guides/config-extending-support

    因此,在您的情况下,建议过滤掉您需要解析/提取的属性并使用休息客户端来获取值。

    该解决方案并不优雅,但应该可以为您解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-08
      • 2021-01-21
      • 2017-07-30
      • 1970-01-01
      • 2021-10-25
      • 2020-09-14
      • 2020-08-27
      • 2017-11-23
      相关资源
      最近更新 更多