aws appsync auth指令未按预期限制访问权限

问题描述 投票:1回答:1

在我正在使用的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角色的任何人仍然可以执行更新,即使他们不属于“管理员”组。

这里发生了什么?是否需要进行其他配置才能使其正常工作?

aws-appsync
1个回答
1
投票

通常,应避免与@aws_auth@aws_cognito_user_pools同时使用aws_iam,因为它们的行为略有不同(see docs here)。

如果您想限制对updateItem的访问,同时仍允许任何IAM身份验证的用户使用createItem,则可以使用:

type Mutation {
    createItem(input: CreateItemInput!): Item
      @aws_iam
    updateItem(input: UpdateItemInput!): Item
      @aws_cognito_user_pools(cognito_groups: ["Admins"])
}

将指令放置在类型上意味着auth config对该类型中的所有字段均有效。将指令放在字段上会使它仅适用于字段。

© www.soinside.com 2019 - 2024. All rights reserved.