目前我正在开发无服务器架构,其中AWS API网关中有一组资源和方法。我计划将Cognito身份验证(用户池)和授权作为安全层添加到AWS API网关。
AWS API Gateway中有3个授权者,它们是IAM,Cognito用户池和自定义lambda。
对于我的使用案例,登录和注册(身份验证)通过API网关使用cognito用户池。这是完美的作品。我的用户将提供应用客户端ID和客户端密钥以启用这两个进程。登录后,我的意图是让用户能够使用访问令牌(由用户池返回)通过api网关访问资源。
但是,我的用户可以具有不同的角色,例如管理员,所有者或访客。用户只能访问授权的api。我的方法是将用户放入用户池中的不同组,将IAM策略分配给组并启用标识池。这迫使我将api网关中的授权类型更改为IAM。和IAM要求签名V4签署每个请求。
这意味着每个请求都必须通过会话令牌,访问密钥,秘密(在使用联合池的交换ID令牌之后返回)而不是使用基于访问令牌的方法进行注册。所以在我的用例中,在我的用户通过api网关登录后,我的客户端应用程序(web / mobile / postman工具)必须生成签名并放入Authorization标头。是否有其他方法来控制用户池组中的授权,但在api网关中使用访问令牌?我的理解是访问令牌(在Authorization标头中)比复杂的签名签名过程更容易使用。
如我错了请纠正我。谢谢。
这会有帮助吗?
在用户池中创建组并将IAM角色分配给该组。
然后将用户添加到该组。
更多文档:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-user-groups.html