1

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

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

4

2 回答 2

1

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

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

一种选择是:

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

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

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

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

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

  6. 在对 APIGateway 端点的调用中使用访问令牌

于 2018-11-04T05:13:17.553 回答