首页 > 解决方案 > AppSync 多重授权

问题描述

我正在使用 AppSync 的多重授权(api 密钥和 OIDC)。

我有一个名为“getStudent”的查询,默认身份验证是 API KEY,OIDC 是附加身份验证模式。

目标是让 API KEY 可以使用“getStudent”,但是,对于 OIDC,只有所有者才能检索他们自己的记录。为此,我编辑了“getStudent”的解析器映射模板:

#if( $ctx.error )
$util.error($ctx.error.message, $ctx.error.type, $ctx.result)
#else
    #if($ctx.result.id == $ctx.identity.claims.get("studentid"))
        $util.toJson($ctx.result)
    #else
        $util.unauthorized()
    #end
#end

但是,虽然这适用于 OIDC,但 API KEY 不再适用。我找不到任何变量或方法来执行“如果检测到 API 密钥模式允许返回所有数据”。

这是一个已知的限制还是我遗漏了什么?

非常感激,

标签: aws-appsync

解决方案


如果您在 AppSync 上使用一种以上的授权类型,那么只有默认的一种适用于所有情况。必须使用适当的指令为每个 Query 和 Mutation 结果显式定义所有其他授权类型,例如:

type Query {
    getPost(id: ID): Post
    getAllPosts(): [Post]
    @aws_api_key. // Assuming default was OpenID Connect then this is necessary for API Key mode to run Query.
}

这是来自 AWS 博客的一篇好文章。


推荐阅读