【问题标题】:AWS Cognito Authentication without client SDK无客户端 SDK 的 AWS Cognito 身份验证
【发布时间】:2018-06-03 04:07:24
【问题描述】:

TL;DR 如何在不将 Cognito SDK 嵌入客户端的情况下通过 AWS Cognito为经过身份验证/未经身份验证的用户提供对我的电影搜索 API 的访问权限?

AWS Cognito documentation 声明您必须将客户端 SDK 部署到您的应用程序中。我想避免将我的 API 实现从外部嵌入到特定的提供者。例如,也许将来我会使用 Google Firebase 或任何其他 IdP。因此,我不想在客户端与 Cognito 进行深度集成。 将 AWS Cognito(或任何 IdP)与客户端隔离的推荐方法是什么?

【问题讨论】:

    标签: amazon-web-services firebase-authentication amazon-cognito serverless


    【解决方案1】:

    您可以将 Cognito 服务隐藏在经过身份验证/未经身份验证的用户的后端。这带来了几个挑战。

    • 对于身份验证,如果您使用 Cognito UserPools 或任何公共身份提供程序,您还需要在后端服务后面验证它们颁发的令牌。
    • 对于未经身份验证的身份,您需要使用手动机制对其进行跟踪,并将该信息发送到后端以启动未经身份验证的用户。
    • 您将无法直接从浏览器访问 AWS 服务,例如将文件上传到 S3(需要 AWS 开发工具包)等(这是 AWS Cognito 联合身份的主要优势之一)。李>

    【讨论】:

    • 谢谢阿山。那么 JWT 代币呢?它不会简化这项任务吗?
    • 您可以使用 Cognito UserPool 颁发的 id_token(即 JWT 令牌)对来自后端的后续请求进行身份验证。
    【解决方案2】:

    一种选择是:

    1. 在 APIGateway 中将您的 API 部署为 http(s) 代理。

    2. 添加 APIGateway 资源策略以允许来自 IAM 角色的操作

    3. 使用代入 IAM 角色的经过身份验证的用户创建 Cognito 用户池

    4. 将 APIGateway 作为资源服务器添加到 Cognito 用户池

    5. 允许用户通过 aws cli 登录并获取访问令牌

    6. 在调用 APIGateway 端点时使用访问令牌

    【讨论】:

      猜你喜欢
      • 2022-06-19
      • 2021-05-05
      • 2016-03-23
      • 2017-01-02
      • 1970-01-01
      • 2020-12-11
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多