gpt4 book ai didi

api - 如何在不使用 API Gateway 的情况下使用 AWS Cognito 进行自定义 Spring REST API 授权

转载 作者:行者123 更新时间:2023-12-04 11:23:57 26 4
gpt4 key购买 nike

场景:
我将在任何 EC2 中运行 Spring Boot REST API 应用程序并公开多个 API,我没有为它们使用 AWS API Gateway。
我需要多个用户来访问具有不同角色(Admin、WriteUser、ReadUser)的多个 API。
我可以在 Cognito 用户池中创建用户和组,并且可以在 IAM 中拥有多个角色。

如何配置 AWS Cognito 的 UserPool 和 IdentityPool 以根据用户角色授权不同的 API 访问?是否有任何方法可以在不使用 API 网关的情况下在策略(与 IdentityPool/资源服务器关联)中定义此类“基于角色的 API 允许规则”。

提前致谢。

最佳答案

我使用带有自定义 JWTFilter 的 Spring security auth2 进行了实现,它将从请求中获取 token 并再次验证认知池的 JWKs 验证文件。

  • 用户在 UI 中输入用户名/密码。
  • UI调用后端Application,后者调用Cognito。
  • Cognito 返回 JWT token (Idtoken、accessToken、refreshTokens)
  • 后端应用程序将 IdToken 作为 token 发送到 UI 并存储在缓存中(也可以是任何数据库)。
  • UI 发送此 IdToken 以供下次调用。

  • JWTFilter 执行以下步骤,用于身份验证:
  • 后端应用程序获取 token ,如果存在则在缓存中进行验证,然后使用 Cognito JWK 验证签名和到期时间,并从中获取详细信息。
  • 后端应用程序创建扩展 AbstractAuthenticationToken 的 UserAuthentication 并从解析的 token 值填充详细信息并存储在上下文( session )中

  • 资源授权将按照 websecurity 配置中提到的配置完成。

    关于api - 如何在不使用 API Gateway 的情况下使用 AWS Cognito 进行自定义 Spring REST API 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58947759/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com