代码之家  ›  专栏  ›  技术社区  ›  CraigH

未登录用户的Appsync授权

  •  0
  • CraigH  · 技术社区  · 8 年前

    在Appsync中的API上,我将授权设置为“amazoncognito User Pool”,将默认操作设置为“Allow”,但是如何使非Cognito用户仍然可以查看页面呢?我应该使用什么设置组合?

    1 回复  |  直到 8 年前
        1
  •  1
  •   thomasmichaelwallace    8 年前

    令人恼火的是,AppSync不支持多种身份验证方法,正如您所注意到的,Cognito用户池集成要求用户在访问graphql端点之前必须登录。

    有一些解决方法,但是没有一个这么漂亮:

    • 部署两个版本-一个使用UserPools提供完整功能,另一个使用API键(嵌入到客户机中)提供开放版本
    • 自己处理身份验证。对应用程序同步使用IAM角色安全性,而不是直接连接到graphql端点,而是在API网关中创建一个代理lambda,该代理验证用户池用户或允许无凭据的有限访问。
    • (例如,在应用程序中,或从端点)凭据。你有责任检查你的用户是否 这 用户在响应安全突变/查询时。一种更安全的方法可能是添加自定义属性“custom:unsecure”,您可以在非开放端点上检查该属性。
    • viewer . 这可能是Cognito在身份验证时返回的访问令牌。然后,每个解析器将负责确定令牌是否有效(例如。 cognito::getUser 观众 定义。

    虽然一开始听起来最难,但我还是推荐我的第一个解决方案。有很多方法可以自动进行AppSync部署,这使得 明确区分