amazon-web-services - 使用不记名 token 的 AWS Cognito 身份验证

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

我在 AWS EKS 上的 kubernetes pod 中提供面向外部的 REST GET API 服务。我为此服务配置了一个 ALB Ingress,它强制执行 Cognito 用户池身份验证。 Cognito 配置了 Authorization code grantopenid已启用 OAuth 范围。
如果我从浏览器调用我的 REST API,我会被重定向到 Cognito 登录页面。在此处的表单上成功进行身份验证后,我可以正常访问我的 REST GET API。这有效,但这不是我想要实现的。
而不是这个,我需要使用 Bearer token ,在成功通过身份验证后。所以首先我调用 https://cognito-idp.ap-southeast-1.amazonaws.com使用 Postman 请求:

    "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": {}
}
在最后一步中,我尝试通过 Authorization 调用我的 REST API 服务。值为 Bearer <AccessToken> 的 HTTP header 但我仍然收到带有登录页面的 HTML 响应。
如何将 Cognito 配置为接受此调用的不记名 token 作为经过身份验证的身份?

最佳答案

引用 AWS 对此主题的支持:“不能使用不记名 token 代替 session cookie,因为在涉及不记名 token 的流中会导致生成 session cookie”。
所以不幸的是,这个用例在今天是不可能实现的。

关于amazon-web-services - 使用不记名 token 的 AWS Cognito 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64462069/

相关文章:

amazon-web-services - AWS IAM 角色策略资源限制

kubernetes - 阿里云托管 Kubernetes Terraform

c# - 如何授权来自另一个 WebApi 项目的请求

php - 对用户信息的 Google OAuth 2 PHP 调用

amazon-web-services - 仅运行一次 ECS 服务任务

amazon-web-services - ECS Execution Role导致容器启动时日志驱动失败?

Kubernetes - 相同的作业,不同的参数

nginx - 反向代理不使用 nginx 和 kubernetes 路由到 API

curl - 使用Curl和Oauth 2将文件上传到DropBox的DropBox API PUT示例

amazon-web-services - 使用aws sdk上传图片到s3