带有Bearer令牌的AWS Cognito身份验证

时间:2020-10-21 10:55:50

标签: amazon-web-services kubernetes oauth-2.0 amazon-cognito kubernetes-ingress

我正在AWS EKS的kubernetes容器中提供面向外部的REST GET API服务。我已经为此服务配置了ALB入口,以强制执行Cognito用户池身份验证。 Cognito已配置Authorization code grant,并且启用了openid OAuth范围。

如果从浏览器调用REST API,则会重定向到Cognito登录页面。在此处对表单进行成功身份验证之后,我可以很好地访问我的REST GET API。这行得通,但这不是我想要实现的。

相反,在成功通过身份验证之后,我需要使用Bearer令牌。因此,首先我使用Postman的请求调用https://cognito-idp.ap-southeast-1.amazonaws.com

    "AuthParameters" : {
        "USERNAME" : "<email>",
        "PASSWORD" : "<mypass>",
        "SECRET_HASH" : "<correctly calculated hash>"
    },
    "AuthFlow" : "USER_PASSWORD_AUTH",
    "ClientId" : "<cognito user pool id>"
}

我得到一个成功的答复,如:

  "AuthenticationResult": {
    "AccessToken": "...",
    "ExpiresIn": 3600,
    "IdToken": "...",
    "RefreshToken": "...",
    "TokenType": "Bearer"
  },
  "ChallengeParameters": {}
}

在最后一步中,我试图调用我的REST API服务,并通过Authorization HTTP头传递值Bearer <AccessToken>,但在登录页面时仍会收到HTML响应。

如何配置Cognito接受此呼叫的我的Bearer令牌作为已验证身份?

1 个答案:

答案 0 :(得分:0)

在以下主题上引用AWS支持:“不能使用Bearer令牌代替会话cookie,因为在涉及Bearer令牌的流程中会导致生成会话cookie”。

不幸的是,这个用例至今无法实现。

相关问题