【问题标题】:AWS AppSync AuthorizationAWS AppSync 授权
【发布时间】:2018-07-04 02:15:45
【问题描述】:

我计划使用 AWS Appsync 在 lambda 函数中迁移 graphQL 端点,该函数由通过 API 网关的 POST 触发。我正在研究 AppSync 主要是因为我无法使用 Lambda 函数创建订阅。

我的身份验证机制基于 Auth0,使用无密码,而我的授权机制基于 DynamoDB 中多个表的数据,并嵌入到 graphQL 解析器中,这是 Facebook 和 Apollo 推荐的。

更重要的是,它基于请求的每个部分,包括检查调用查询/变异的权限,然后是查询中包含的不同实体,因为相应的解析器正在被触发。

据我所知,这在 AWS AppSync 中还遥不可及,因为它使用 Cognito 强制执行。也许某种自定义授权器,如 API Gateway 中的可以完成这项工作,但仍然不确定,因为它需要在 graphQL 请求解析期间执行多次(请记住,除了初始操作检查之外,每个嵌套对象一个)。

也许我可以使用通知解决订阅问题并刷新查询,但我也必须对此进行研究。

其他人也有这个问题吗?你打算怎么解决,或者已经解决了?

任何帮助将不胜感激

卡洛斯

【问题讨论】:

    标签: amazon-web-services lambda graphql graphql-subscriptions aws-appsync


    【解决方案1】:

    此时,AppSync 支持使用您正在查询的资源中的元数据进行 AuthZ 检查,或者您可以传递数据并在解析器中进行检查。例如,您可以在 DynamoDB 表上存储授权元数据并检查它然后返回数据,但您不能检查单独的数据源。不过,由于 AppSync 还不是 GA,未来将会开放更多的身份验证方法。

    同时一些选项:

    • 使用 Lambda 作为解析器,并在读取/写入 DynamoDB 之前进行 AuthZ 检查

    • 将您的 Auth0 身份与 AWS IAM 联合,并在解析程序中使用这些凭证作为检查。 AppSync 支持这些凭据。

    • 检查您通过的解析器中的 JWT 声明以进行 AuthZ 检查。为此,您可以在 Velocity 语言中使用 $context.identity.claims.attrib�

    随着服务的发展,请在接下来的几个月中继续查看 AppSync 文档页面,以获取更多选项。

    编辑文档中现在有一个关于 AppSync 授权场景和用例的指南:https://docs.aws.amazon.com/appsync/latest/devguide/security-authorization-use-cases.html

    编辑 #2 有一篇新博文介绍了将多个数据源与解析器一起用于高级授权场景:https://hackernoon.com/graphql-authorization-with-multiple-data-sources-using-aws-appsync-dfae2e350bf2

    【讨论】:

    • 谢谢@Richard,我已经考虑过这些选项,这是使用 lambda 作为解析器的最可行的解决方案,这会更昂贵,因为它只需要 N+1 lambda 执行和 DynamoDB 调用对于授权,查询中嵌套对象的数量为 N。当然,我会定期检查 AppSync,但您必须解决多租户系统的问题。祝你好运,如果我能提供帮助,请告诉我:)
    • 您是否查看过使用 AppSync 对 Lambda 进行批量调用? docs.aws.amazon.com/appsync/latest/devguide/…@CarlosDelgado
    • 当然这看起来更好,使用此选项将迫使我们在每个解析器中使用 batchInvoking,并缓解 N+1 问题,但我想知道它是否会下降到每个查询/突变只有 1 次调用?不确定...我也不确定订阅后如何使用。我想我必须更仔细地研究它,因为我对这项服务的先进技术有太多疑问。
    • @CarlosDelgado 请查看我们为此发布的新博文,看看 Lambda 方案是否可以帮助您:hackernoon.com/…
    • @Richard 你能告诉我这个应用于突变的例子吗?
    猜你喜欢
    • 1970-01-01
    • 2019-03-11
    • 2020-12-02
    • 2021-09-23
    • 2021-07-28
    • 2018-12-13
    • 1970-01-01
    • 2021-08-13
    • 2018-07-30
    相关资源
    最近更新 更多