以下是我的用例 -
我正在开发一个Android应用程序。我试图在它的后面使用aws api网关和lambda函数。 但即使在我登录之前,我想保护HTTP调用并验证我的应用程序。为此,我计划将Cognito与API网关结合使用。所以首先我的电话将转到认证应用程序(不是用户)的认知,然后我的电话将转到任何Lamda功能。我想在api网关的SDK中包含所有这些内容。
问题1 - 甚至可以这样做(请参考我的一些文档或代码)
问题2 - 是否推荐。或者有更好的方法吗?
答案 0 :(得分:4)
我知道这可能为时已晚。但对于遇到此问题的人,有两种方法可以保护您的API端点,具体取决于您的方案。
如果您当前没有用户目录(登录/注册系统),则可以使用Cognito User Pool来保护您的Apis。步骤是
这是流程中的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网关方法。
答案 1 :(得分:1)
是的,这是可能的,我认为这是正确的方法。您可以使用Android SDK来调用Cognito并进行身份验证,在Cognito中您可以配置为返回特定角色的临时IAM帐户,此角色应该只有权调用API网关。 然后,您的客户端可以使用这些临时IAM凭证使用生成的Android SDK对API网关进行调用(您可以在部署API后从API网关控制台生成它)。 您必须在API网关中配置API端点以通过IAM进行保护,并确保在需要跨域CORS支持时在资源上创建OPTIONS方法。