首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cognito授权程序组

Cognito授权程序组
EN

Stack Overflow用户
提问于 2021-04-13 03:00:00
回答 1查看 138关注 0票数 0

我在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端点吗?

还有没有其他用户友好的方式?

EN

回答 1

Stack Overflow用户

发布于 2021-04-15 20:05:14

您说得对,cognito只会验证令牌,而不会验证IAM/组权限。因此,如果令牌有效,则客户端可以访问api。我也在为同样的问题而苦苦挣扎,最后我写了一个自定义的lambda授权器。

这就是我所做的。

  1. 在数据库中维护组到资源的映射。此外,要操作的资源(GET/POST等)。
  2. 认知中的组名必须与数据库中的组名匹配。
  3. 在lambda authorizer中,您可以检查传入的资源、组和操作组合是否存在于数据库中,并返回启用对资源的访问的策略。
  4. 您还需要验证令牌签名和过期。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67064189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档