Amazon web services 使用AWS Amplify Auth和GraphQL API,您将如何进行一些公共和私有查询/变异调用?

Amazon web services 使用AWS Amplify Auth和GraphQL API,您将如何进行一些公共和私有查询/变异调用?,amazon-web-services,graphql,aws-amplify,aws-appsync,amplifyjs,Amazon Web Services,Graphql,Aws Amplify,Aws Appsync,Amplifyjs,设置: AWS放大API w/GraphQL AWS Amplify Auth w/Cognito用户池 假设平台的大部分应该可以被注销的用户访问。例如,他们应该能够阅读论坛主题,但如果他们想发布,他们需要登录 我看到了一个可以使用的@auth解析器,但每当我尝试调用my.url.amazonawscom/graphQL获取主题时,它都会显示“errorType”:“UnauthorizedException”。我很难弄清楚一个注销的用户是如何获得公开访问数据的授权的。在Cognito身份池

设置:

  • AWS放大API w/GraphQL
  • AWS Amplify Auth w/Cognito用户池
假设平台的大部分应该可以被注销的用户访问。例如,他们应该能够阅读论坛
主题
,但如果他们想发布,他们需要登录


我看到了一个可以使用的@auth解析器,但每当我尝试调用
my.url.amazonawscom/graphQL
获取
主题时,它都会显示
“errorType”:“UnauthorizedException”
。我很难弄清楚一个注销的用户是如何获得公开访问数据的授权的。

在Cognito身份池中,您需要为未经授权的用户设置策略。转到编辑标识池,您可以看到一个选项,其中可以为未经授权的AWS AppSync设置角色。AWS AppSync最近启动了对同一AppSync API上多个授权类型的支持。例如,您可以在API上启用cognito用户池作为授权类型,并添加API_密钥作为额外的授权提供者

在此之后,您将能够使用@aws_api_key指令对模式中的选定字段(例如getForumTopics)进行api密钥验证。API密钥通常被视为提供公共访问


此外,Cognito用户池和Cognito联合身份是独立的产品。Cognito联合身份确实有一个未经身份验证的身份角色,您可以使用它来保护架构中的顶级字段,但看起来API上的身份验证类型设置为Cognito用户池。

哦,很有趣,是的,我刚刚看到了启用它的设置。所以它是启用的,但是我是否需要在请求期间传递一些通用的JWT令牌,或者头中的任何东西?它现在说的是“无法解析JWT令牌”,意思是,我可以让它为经过身份验证的用户使用JWT令牌,但无法确定未经身份验证的用户使用什么标题。如果尝试使用Postman或Insmonia,对于未经身份验证的用户,没有生成JWT令牌。我理解,但查询的格式是什么,对于未经身份验证的用户,例如,postman。我无法实现上述查询,希望我可以传递某种标头信息以验证未经验证的用户。请使用AWS API网关接口测试这些端点。在测试端点之前,确保已将API部署到阶段中。在APi网关中,我希望您已配置IAM授权程序。在Cognito标识池中的“未经身份验证的标识”部分,选中“启用对未经身份验证的标识的访问”框