【问题标题】:JWT claims verification for AWS ALB returns 403 Access DeniedAWS ALB 的 JWT 声明验证返回 403 Access Denied
【发布时间】:2021-04-26 18:11:08
【问题描述】:

根据https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-authenticate-users.html#user-claims-encoding,验证 AWS ALB 的 JWT 声明很简单,只需调用https://public-keys.auth.elb.$region.amazonaws.com/$key-id,但由于某种原因,总是会给出 403 Access Denied -错误。区域设置为与 ALB 相同,$key-id 取自 JWT 标头(kid)。从 AWS 网络内或从本地计算机调用没有区别。

ALB 配置为使用 Okta OIDC 进行身份验证,然后转发到内部 EC2/EKS 框。 JWT 有效负载是正确的。什么可能导致 403?

【问题讨论】:

  • 您能否检查密钥 ID 和区域是否正确/有效?如果 key-id 错误或 key-id 和区域组合不匹配,则可能发生此错误
  • Region (eu-north-1) 匹配 JWT 签名者和 ALB ARN。 Key-id 是来自 JWT 标头的孩子值。同事有同样的问题。他们的价值观似乎是正确的。

标签: amazon-web-services openid-connect amazon-elb okta


【解决方案1】:

您在 Okta 中使用的是组织授权服务器还是自定义授权服务器? (有关 Okta 授权服务器的更多信息 here) org 授权服务器铸造的 JWT 无法在本地验证。 See this documentation

【讨论】:

  • 谢谢!那时大概就是这样了。使用默认的组织授权服务器。
  • 使用自定义身份验证服务器进行测试未解决此问题(仍然 403 Access Denied)。这确实修复了使用 Okta 的双重登录,因为自定义 Okta URL (OrgUrl CNAME) 的 cookie 适用于身份验证服务器。针对访问令牌的 Okta API 的远程自省工作(由 OrgUrl 本身签名)。可能相关,我没有设法使用 Okta 的 /v1/keys 数据验证 JWT,因为 'x-amzn-oidc-data' 中的 'kid' 不匹配。
【解决方案2】:

AWS 似乎不支持 eu-north-1 区域的 JWT 验证。在其他地方也能正常工作。

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 2018-09-09
    • 1970-01-01
    • 2018-01-11
    • 2015-03-02
    • 2012-08-26
    • 2017-09-09
    • 2020-11-24
    • 2022-01-14
    相关资源
    最近更新 更多