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