我正在从 Cognito
过渡至 Auth0
.对于我的一些 AppSync
查询和突变,我已经应用了@aws_auth 指令,它可以包含一个列表 Cognito
组来控制访问级别。
下面的示例显示了一个名为 createEvent
的突变。 ,仅允许位于 Cognito
中的用户组 tracker_admin 和pilot_admin,以执行此更改。
下面是一个例子:
createEvent(input: CreateEventInput!): Event
@aws_auth(cognito_groups:["tracker_admin", "pilot_admin"])
我已经使用 OPENID_CONNECT
成功配置了一个额外的身份验证提供程序( Auth0
)并添加了指令 @aws_oidc
到我的 GraphQL
架构。在我的 Auth0
仪表板 我已经设置了范围,当他们向我的应用程序客户端进行身份验证时,这些范围会根据用户的角色添加到用户的访问 token 中。我的目标是更新我的架构以使用 OIDC 身份验证并将权限应用于指令,如下所示:
directive @aws_oidc(
permissions: [String]
) on OBJECT | FIELD_DEFINITION
createEvent(input: CreateEventInput!): Event
@aws_oidc(permissions:["create:event"])
我的 Auth0
access_token 确实有一个 "permissions"
字段,其中包括用户拥有的范围列表。这些权限列表在 "identity"
的事件上下文中进入我的 lambda 解析器。下"claims"
.如何使用
@aws_oidc
的指令在模式级别完成此授权就像我现在使用的 @aws_auth
一样用于用户池 Cognito 组?
最佳答案
这已经很晚了,但是对于需要帮助使用 OIDC 设置 AppSync 的任何其他人,我在查看此博客后想出了这个:https://aws.amazon.com/blogs/mobile/graphql-security-appsync-amplify/ .以下是如何在您的 schema.graphql
中进行设置的示例。
更改 groups
的值满足您的需求,以及 groupClaim
成为对您的 OIDC token 的声明以供阅读。根据需要定制操作
type Foo
@model
@auth(
rules: [
{
allow: groups
groups: ["ADMIN", "USER"]
operations: [create, update, delete, read]
provider: oidc
groupClaim: "role"
}
]
) {
id: ID!
anotherId: ID!
}
关于graphql - 如何在 Graphql 架构级别检查 AWS AppSync OIDC 指令的角色或权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64938956/