【问题标题】:AWS ALB Cognito JWT/OIDC authenticationAWS ALB Cognito JWT/OIDC 身份验证
【发布时间】:2022-01-26 23:17:16
【问题描述】:

我们正在尝试将 AWS ALB 与 Cognito 用户池集成。我们在 ALB 中设置了规则来使用 Cognito 客户端对用户进行身份验证。在 webapp 身份验证之后,会设置会话 cookie。这一切都很好。

现在,我们有一个桌面应用程序,它在内部与 Cognito 连接,获取访问令牌 JWT 并对其进行管理(刷新等)。现在,我们尝试使用此访问令牌作为授权标头向 ALB 发起 http 请求。 ALB 将这些请求再次重定向到 Cognito 登录页面,而不是验证(并允许)Auth 标头中存在的 JWT。

我们期望的是,如果请求包含有效的 Auth 标头 (JWT),ALB 应该首先验证它,然后在成功验证后允许它。似乎 ALB 不检查 Auth 标头。我们如何使用 ALB 实现这一目标?
此外,桌面应用程序是否可以直接使用 ALB(而不是 Cognito)并使用 Session ID 而不是 JWT/Access Token?

【问题讨论】:

    标签: amazon-web-services authentication jwt amazon-cognito aws-application-load-balancer


    【解决方案1】:

    我假设您已按照说明 here 并设置了单个侦听器规则,其中包含操作 authenticate-cognitoforward

    如果是,那么我认为最好的解决方案是添加具有host header condition更高优先级 规则。

    如果您这样做,您后端的授权代码将必须同时查找 Authorizationx-amzn-oidc-accesstoken

    【讨论】:

    • 是的,我按照这些说明进行操作。根据您的建议,ALB 会使用提供的身份验证标头进行身份验证吗?还是我的后端需要照顾它?
    • @NumeroUno - 目前 ALB 不支持基于 JWT 拒绝请求的能力(与 API 网关不同),所以是的,您需要在后端进行验证。无论如何,这都是一个好主意,特别是如果您将多个 Cognito 用户池用于不同的应用程序(以避免配置错误的 ALB 出现问题)。
    • 谢谢@Parsifal
    猜你喜欢
    • 2019-11-18
    • 2018-01-29
    • 2016-06-25
    • 1970-01-01
    • 2017-01-02
    • 2018-05-22
    • 2016-12-22
    • 2021-10-04
    • 2020-01-30
    相关资源
    最近更新 更多