我可以使用 aws amplify 和 @auth 装饰器将 GraphQL 突变设为私有吗?这被认为是一种安全的方法吗?
Posted
技术标签:
【中文标题】我可以使用 aws amplify 和 @auth 装饰器将 GraphQL 突变设为私有吗?这被认为是一种安全的方法吗?【英文标题】:Can I make GraphQL mutations private by using aws amplify and @auth decorator? Is that considered as a secured approach? 【发布时间】:2021-05-23 23:14:31 【问题描述】:我正在使用 React 和 AWS 构建邮局应用程序。我目前正在构建我的 GraphQL API,我知道我可以在我的 graphQL 方案中使用 @auth 装饰器,这允许我阻止某些用户根据他们的身份验证状态和组读取属性。
我想知道是否可以将这些 @auth 规则添加到突变中?我的目的是防止不在 Admin 或 Worker 组中的用户访问我的 API 突变以删除包。如果不可能,使特定突变只能由特定组访问的最佳方法是什么(这些组存储在 AWS Coginto 用户投票中)?
【问题讨论】:
【参考方案1】:确实,您可以使用@auth
指令将给定@model
的突变访问限制为一组已知的组。例如,要仅允许管理员和员工访问给定模型的删除操作,您可以尝试以下操作:
type Package
@model
@auth(
rules: [
allow: groups, groups: ["Admin", "Workers"], operations: [delete]
]
)
id: ID!
此处,调用 API 时,对于未注册 admin 或employee 组的任何用户,操作将失败。查看Static Group Authorization 和Dynamic Group Authorization 上的文档了解更多信息。
【讨论】:
以上是关于我可以使用 aws amplify 和 @auth 装饰器将 GraphQL 突变设为私有吗?这被认为是一种安全的方法吗?的主要内容,如果未能解决你的问题,请参考以下文章
Auth.signIn() 使用设备 - AWS Amplify 与 React-Native
模拟适用于 Android 的 AWS Amplify Auth API
aws-amplify auth currentSession 不返回当前用户
AWS amplify add auth:如何在执行 amplify cli 后添加重定向登录 URI