首页 文章

使用Cognito向AWS API Gateway验证应用程序

提问于
浏览
1

以下是我的用例 -

我正在开发一个Android应用程序 . 我试图在它的后面使用aws api网关和lambda函数 . 但即使在我登录之前,我想保护HTTP调用并验证我的应用程序 . 为此,我计划将Cognito与API网关一起使用 . 所以首先我的电话将转到认证应用程序(不是用户)的认知,然后我的电话将转到任何Lamda功能 . 我想在api网关的SDK中包含所有这些内容 .

问题1 - 甚至可以这样做(请参考我的一些文档或代码)

问题2 - 是否推荐 . 或者有更好的方法吗?

2 回答

  • 4

    是的,这是可能的,我认为这是正确的方法 . 您可以使用Android SDK来调用Cognito并进行身份验证,在Cognito中您可以配置为返回特定角色的临时IAM帐户,此角色应该只有权调用API网关 . 然后,您的客户端可以使用这些临时IAM凭证使用生成的Android SDK对API网关进行调用(您可以在部署API后从API网关控制台生成它) . 您必须在API网关中配置API endpoints 以通过IAM进行保护,并确保在需要跨域CORS支持时在资源上创建OPTIONS方法 .

  • 1

    我知道这可能为时已晚 . 但对于遇到此问题的人,您可以通过两种方式保护API endpoints ,具体取决于您的方案 .

    如果您当前没有用户目录(登录/注册系统),则可以使用Cognito User Pool来保护您的Apis . 步骤是

    在AWS Cognito控制台中

    • ,创建Cognito用户池
      在API网关控制台中

    • ,创建一个Cognito用户池授权程序

    • 在您的JS代码中,使用Cognito用户池对用户进行身份验证,该用户池将返回给您一个用户令牌,然后您可以在对api进行Ajax调用时在Authorization标头中使用该令牌 .

    这是一个关于这个过程的step-by-step tutorial . 我建议从创建Cognito用户池一章开始 .

    http://serverless-stack.com/chapters/create-a-cognito-user-pool.html

    第二种情况是,如果您已经拥有Facebook / Twitter或任何其他社交登录的用户目录 . 您需要创建一个Cognito Identity Pool . 你可能会发现answer很有用 .

    要使用联合身份,请将API网关方法设置为使用“AWS_IAM”授权 . 您可以使用Cognito创建角色并将其与Cognito身份池关联 . 然后,您可以使用身份和访问管理(IAM)服务授予此角色调用API网关方法的权限 .

相关问题