aws-appsync - aws appsync auth 指令未按预期限制访问
问题描述
在我正在使用的 appsync api 的 graphQl 架构中,我想根据用户所属的组来限制我的用户操作。
根据文档,添加该行aws_auth(cognito_groups: ["Admins"])
应将访问权限限制为仅属于“管理员”组的用户。当我从 appsync 控制台或应用程序本身运行突变时,不会发生这种情况。
我的突变如下:
type Mutation @aws_iam
@aws_cognito_user_pools {
createItem(input: CreateItemInput!): Item
updateItem(input: UpdateItemInput!): Item
@aws_auth(cognito_groups: ["Admins"])
}
@aws_iam 和 @aws_cognito_user_pools 指令似乎工作正常。但任何已通过身份验证或具有 iam 角色的人仍然可以执行更新,即使他们不属于“Admins”组。
这里发生了什么?是否需要进行其他配置才能使其正常工作?
解决方案
只是为了进一步澄清,因为这没有很好的记录。
如果您使用单个授权提供程序并且该提供程序是 Cognito,则应始终使用该@aws_auth
指令。不要使用该@aws_cognito_user_pools
指令,因为如果您使用基于组的授权,它就不起作用。这在 AWS Cognito 文档中没有详细记录,并且是一个陷阱,因为 AppSync 将允许您配置此指令。
如果您使用多个授权提供商并且您使用的是 Cognito,则必须使用@aws_cognito_user_pools
AWS Cognito 文档中记录的指令。奇怪的是,基于组的授权可以正确使用@aws_cognito_user_pools
,但仅在使用多个授权提供程序时才能正常工作。
推荐阅读
- sql - 根据条件事件标记地址
- gradle - 导致 zip END 标头在 intleij 中找不到 gradle 项目
- python - 在python/pygame中以OOP方式按顺序保存文本输入和blit文本
- python - IndexError:索引 50552 超出轴 0 的范围,大小为 50552
- php - 如何在“添加到购物车”按钮旁边显示价格?
- algorithm - 是否有一种算法可以通过水箱水位的变化来检测水箱中的补充水
- xts - 是否可以仅使用年份作为索引来创建 xts 对象?
- python-3.x - 是否有任何快速的方法来检查 ext2/3/4 空闲 inode(在未安装的磁盘上)?和/或为什么它们不都具有相同的“坏类型”状态
- python - 在 python 中处理需要我显示名称和价格(从最高到最低)并且最便宜的项目是免费的场景,
- node.js - 带有 amqplib 的 Rabbitmq inNode.js 不广播扇出消息