Amazon web services 无客户端SDK的AWS Cognito身份验证

Amazon web services 无客户端SDK的AWS Cognito身份验证,amazon-web-services,firebase-authentication,amazon-cognito,serverless,Amazon Web Services,Firebase Authentication,Amazon Cognito,Serverless,TL;DR 如何通过AWS Cognito为经过身份验证/未经身份验证的用户提供对我的电影搜索API的访问,而不将Cognito SDK嵌入客户端? AWS Cognito声明必须将客户端SDK部署到应用程序中。我希望避免将API实现从外部嵌入到特定的提供者。例如,也许将来我会使用Google Firebase或任何其他IdP。因此,我不想在客户端与Cognito进行深度集成。 将AWS Cognito(或任何IdP)与客户端隔离的推荐方法是什么?对于经过身份验证/未经身份验证的用户,您可以将C

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

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

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

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

    • 一种选择是:

    • 在APIGateway中部署API作为http(s)代理

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

    • 创建一个Cognito用户池,其中包含假定IAM角色的经过身份验证的用户

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

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

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


    • 谢谢你,阿山。那么JWT代币呢?它不会简化这个任务吗?您可以使用Cognito UserPool发布的id_令牌(JWT令牌)来验证来自后端的后续请求。