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

问题描述 投票:1回答:1

场景:我将在任何EC2中运行带有各种API的Spring boot REST API应用程序,并且不使用AWS API Gateway。我需要多个用户来访问具有不同角色(Admin,WriteUser,ReadUser)的多个API。我可以在Cognito Userpool中创建用户和组,并且可以在IAM中具有多个角色。

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

预先感谢。

api authorization amazon-cognito spring-rest
1个回答
0
投票

您需要使用Spring安全性实现JWT令牌方法(可以使用spring security auth 2 impl。)

所以身份验证步骤如下:

  • 用户将在您的前端应用程序中输入其凭据。
  • 您的身份验证服务会将这些凭证发送到AWS Cognito进行验证。
  • 如果用户凭证将在AWS Cognito用户响应的帮助下进行验证,则您将创建一个有效负载,然后创建一个JWT令牌。
  • 用公钥-私钥对JWT令牌签名,以便您可以与其他服务共享您的公钥来验证JWT令牌。
  • 然后将JWT令牌返回到前端应用程序。
  • 现在,Spring Security将为您保护所有私有路线。
  • 您还需要创建一个过滤器,因此当前端应用在头中附加JWT时向服务器创建ant请求,然后您的过滤器将验证JWT令牌(作为身份验证头),如果该令牌有效,则将创建安全性当前请求的上下文,否则抛出401状态。
© www.soinside.com 2019 - 2024. All rights reserved.