没有客户端SDK的AWS Cognito身份验证

时间:2017-12-20 14:53:18

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以为经过身份验证/未经身份验证的用户隐藏后端后面的Cognito服务。这带来了一些挑战。

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

答案 1 :(得分:0)

一个选择是:

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

  2. 添加APIGateway资源策略以允许通过IAM角色进行操作

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

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

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

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