Amazon Cognito 和 Amazon API Gateway 的集成为开发者提供了一个简单但非常强大的方法来控制对 API 的访问。下面是一些步骤来指导你如何实现这种集成:
1. 创建 Cognito 用户池
首先,你需要在 AWS 管理控制台上创建一个 Cognito 用户池。
- 登录 AWS 控制台并选择 Amazon Cognito 服务。
- 选择“管理用户池”并点击“创建用户池”。
- 按照提示完成用户池的创建。
2. 在 API Gateway 创建作者化器
为了使用 Cognito 用户池来控制对 API 的访问,你需要在 API Gateway 创建一个 Cognito 用户池作者化器。
- 在 AWS 管理控制台中,导航到 API Gateway 服务。
- 选择你的 API。
- 在左侧导航栏中,选择“Authorizers”。
- 点击“Create New Authorizer”。
- 为Authorizers命名,选择“Cognito”作为类型,并选择你之前创建的用户池。
- 点击“创建”。
3. 将作者化器与 API 端点关联
一旦你创建了 Cognito Authorizers,下一步是将其与 API 端点或资源关联。
- 在 API Gateway 控制台中,选择你的 API。
- 选择你希望控制访问权限的资源或端点。
- 选择 HTTP 方法(例如 GET 或 POST)。
- 在“方法请求”部分,选择“设置为所需”的“Cognito 用户池 Authorizers”。
- 在下拉菜单中,选择你之前创建的Authorizers。
- 点击保存。
4. 测试集成
为了测试这种集成,你需要从 Cognito 用户池中获取一个 JWT 令牌,并在请求 API 时将其作为头部信息发送。
- 使用 AWS SDK 或 Cognito 提供的 SDK 登录用户,从而获取 JWT 令牌。
- 使用工具(如 Postman)或自己编写的代码调用 API Gateway 端点。
- 在请求头中添加以下信息:
Authorization: your-jwt-token
- 发送请求。如果令牌有效,你应该能够正常访问 API;否则,你将收到 401 Unauthorized 错误。
5. 注意事项
- 确保 Cognito 用户池中的用户具有必要的权限访问与之关联的 AWS 资源。
- JWT 令牌有过期时间,通常为 1 小时。当令牌过期时,用户需要重新认证以获取新的令牌。
总的来说,通过将 Amazon Cognito 和 API Gateway 结合使用,开发者可以轻松地为他们的 APIs 提供安全、可扩展的身份验证和授权机制。