我在Angular中有一个单页应用程序,一个带有Lambda的API网关用于后端服务,Cognito用户池用于身份验证和授权。
对某些API终结点的访问取决于用户角色。您可以使用(执行API invoke for the Api Gateway资源)策略将IAM角色附加到组。
但是,在调用API之前,使用Cognito作为API Gateway的Authorizer仅检查用户是否经过了身份验证(通过在Authorization头中传递ID令牌,在成功登录后,此令牌将从Cognito用户池返回)。用户所在的组不会被用来检查它所在的组以及它所拥有的IAM权限。
有没有一个好的方法,授权我的web用户,根据他们的角色调用特定的API端点,而不是创建一个Lambda (自定义)授权程序。
我不想使用亚马逊网络服务签名V4的应用编程接口网关与IAM授权。我也不想创建Lambda Authorizer,它验证ID令牌,检查附加到它的角色,并返回基于该角色的策略。
我不能只使用我为Cognito组配置的角色,并结合Cognito Authorizer来访问基于该组的附加角色/策略的API端点吗?
还有没有其他用户友好的方式?
发布于 2021-04-15 20:05:14
您说得对,cognito只会验证令牌,而不会验证IAM/组权限。因此,如果令牌有效,则客户端可以访问api。我也在为同样的问题而苦苦挣扎,最后我写了一个自定义的lambda授权器。
这就是我所做的。
https://stackoverflow.com/questions/67064189
复制相似问题