根据 AWS 文档,Appsync 现在支持使用多种授权类型,以允许仅使用默认授权类型(即 api_key)查询某些字段,而仅使用辅助身份验证类型(即 cognito_user_pools)访问其他字段).
但是,我无法设置我的 appsync graphql api,仅当用户请求同时具有两种授权类型时才可检索某种类型,在我的情况下,这些类型是 api_key 和 aws_iam。 api_key 是主要授权类型,iam 是附加授权类型。
这是否可以实现,或者一个请求只能使用一种授权类型?
示例代码如下:
type Car @aws_api_key @aws_iam {
id: ID!
year: Int
color: String
tireType: String
}
type Query {
getCar(id: ID!): Car @aws_api_key @aws_iam
}
仅当用户请求同时具有 api-key 标头和表明该请求已正确签名的 Signaturev4 授权标头时,最终结果才应检索 Car 类型。
我尝试在 appsync GQL 设置中添加两种授权类型,并将适当的条件附加到我想要授权的类型,但它没有提供所需的结果。
我使用确切的语法来指定授权类型之间的“OR”关系。您必须创建一个自定义解析器来检查“AND”关系,然后您的解析器将与您的架构不匹配。你应该考虑是否真的需要“AND”。 IAM 身份验证通常比 API 密钥安全得多。