amazon-web-services - aws cognito - 是否可以在不使用身份池的情况下使用基于角色的权限控制
问题描述
背景
我在我的前端网站中使用 Amplify Framework(javascript) 进行注册/登录。
登记
Auth.signUp({
username,
password,
attributes: {
email: email
}
})
登录
Auth.signIn(payload.username,payload.password)
每次用户登录时,都会将 cognito id 令牌存储在 localStorage 中,用于访问 API Gateway 中的 API。
对于当前设计,每个成功登录的用户都可以调用 ALL api。
问题
现在我想对调用api做基于角色的权限控制,例如角色banner_admin只能调用/banner api,而角色device_admin只能调用/equipment api。
经过一番研究,Identity Pool 似乎能够做到这一点。但我不想更改我的登录流程。
有人可以提供最快、最方便的方法来实现我的应用程序中基于角色的权限控制吗?是否可以不使用身份池?
解决方案
是的,可以在不使用身份池服务的情况下执行此操作。实际上,身份池不是用于此目的的。它只是将临时凭证交换给经过身份验证或未经身份验证的用户以访问您的 AWS 资源。
为此,您应该使用 Cognito 用户池服务支持的组。一旦用户通过 Cognito 身份验证,他获得的声明将包括他所属的组信息(如果您将用户添加到用户池中的特定组)。您可以根据该组处理权限。
在发布确认 Cognito 事件后,您可以触发您的 lambda 函数,然后您可以在后台将用户添加到相应的用户组。
推荐阅读
- php - npm 问题 laravel popper install
- python - 如何从 groupby 制作的数据制作散点图?
- javascript - 如何增加预加载器的淡出时间?
- azure - Azure 数据工厂发布分支选项与 publish_config.json
- snowflake-cloud-data-platform - 雪花:如何以字节为单位获取数组的大小?
- html - 为什么我的模态页眉和模态页脚导致我的网站布局混乱
- multithreading - TThread.OnTerminate 执行线程
- javascript - 合并和连接两个对象数组 - JS
- php - 有人可以告诉我这个脚本中的错误(如果存在)吗?
- css - 如何隐藏模态滚动条