1

以下是我的用例 -

我正在开发一个安卓应用程序。我正在尝试在其后面使用 aws api 网关和 lambda 函数。但即使在我登录之前,我也想保护 HTTP 调用并验证我的应用程序。为此,我计划将 cognito 与 API 网关一起使用。所以首先我的电话将转到 cognito,它将对应用程序(而不是用户)进行身份验证,然后我的电话将转到任何 Lamda 函数。我想将所有这些都包含在 api gateway 的 SDK 中。

问题 1 - 是否可以这样做(请参考一些文档或代码)

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

4

2 回答 2

4

我知道这可能为时已晚。但是对于遇到此问题的人,您可以通过两种方式来保护您的 API 端点,具体取决于您的场景。

如果您当前没有用户目录(登录/注册系统),您可以使用 Cognito 用户池来保护您的 API。步骤是

  1. 在 AWS Cognito 控制台中,创建一个 Cognito 用户池
  2. 在 API Gateway 控制台中,创建一个 Cognito 用户池授权者
  3. 在您的 JS 代码中,使用 Cognito 用户池对用户进行身份验证,这将返回一个用户令牌,然后您可以在对 api 进行 Ajax 调用时在 Authorization 标头中使用该令牌。

这是有关该过程的分步教程。我建议从创建 Cognito 用户池一章开始。

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

第二种情况是,如果您已经拥有 Facebook/Twitter 或任何其他社交登录名的用户目录。您将需要创建一个 Cognito 身份池。您可能会发现此答案很有用。

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

于 2017-03-09T18:53:31.340 回答
1

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

于 2015-09-08T13:45:18.280 回答