Skip to content
返回云服务

AWS Cognito 用户池

托管认证 — 注册/登录、社交登录、MFA、JWT 令牌和托管 UI。

AWS进阶

为什么

Cognito 免建认证 — 用户池、社交登录(Google/Apple/Facebook)、MFA、JWT 签发。5 万 MAU 免费。集成 API Gateway/AppSync。

何时使用

任何需用户认证的应用,尤其社交登录或企业(SAML)时用。需自定义认证逻辑时避免(用 Lambda 授权器)。

如何做

1. 用户池 — aws cognito-idp create-user-pool,属性、策略 2. 应用客户端 — aws cognito-idp create-user-pool-client,OAuth 流 3. 托管 UI — Cognito 域、登录/注册页、可品牌化 4. 社交 — 添加身份提供者(Google、Facebook、Apple、SAML) 5. MFA — 可选/必需、TOTP 或 SMS 6. 触发器 — Lambda on PreSignUp、PostConfirmation、CustomMessage 7. 令牌 — ID/Access/Refresh JWT,用于 API Gateway/AppSync 8. 身份池 — 按用户访问 AWS 资源(S3、DynamoDB)

示例

# 创建带社交登录的用户池 aws cognito-idp create-user-pool --pool-name my-pool \ --policies PasswordPolicy={MinimumLength=8,RequireUppercase=true} \ --schema Name=email,Required=true # 前端 — Amplify Auth import { signIn, signUp, fetchAuthSession } from "aws-amplify/auth"; await signUp({ username: "[email protected]", password, options: { userAttributes: { email } } }); await signIn({ username, password }); const { tokens } = await fetchAuthSession(); // tokens.accessToken.jwtToken → 作为 Authorization: Bearer 发送 # API Gateway — Cognito 授权器 aws apigateway create-authorizer \ --rest-api-id api123 \ --name cognito-auth \ --type COGNITO_USER_POOLS \ --provider-arns arn:aws:cognito-idp:us-east-1:123:userpool/us-east-1_abc

常见问题

  • ⚠令牌撤销难 — 刷新令牌有效 30 天,用令牌使用即时撤销
  • ⚠托管 UI 定制有限 — 完全控制用 Auth SDK 构建自定义 UI
  • ⚠每账户 50 用户池 — 申请增加或合并池

最佳实践

  • ✓快速用托管 UI — 免费处理 OAuth 流、MFA、忘记密码
  • ✓短访问令牌 TTL(1 时)+ 长刷新(30 天)— 平衡安全和体验
  • ✓用 PreSignUp Lambda — 验证邮件域、自动确认内部用户

常见问题解答

什么是AWS Cognito 用户池?它解决什么问题?

托管认证 — 注册/登录、社交登录、MFA、JWT 令牌和托管 UI。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手AWS Cognito 用户池?

两步即可跑通:① 用户池 — aws cognito-idp create-user-pool,属性、策略;② 应用客户端 — aws cognito-idp create-user-pool-client,OAuth 流。建议先用免费套餐验证流程,再接入生产环境。

AWS Cognito 用户池 最容易踩的坑是什么?

最高频的问题是:令牌撤销难 — 刷新令牌有效 30 天,用令牌使用即时撤销。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

AWS Cognito 用户池 的最佳实践有哪些?

AWS Cognito 用户池 的最佳实践包括:快速用托管 UI — 免费处理 OAuth 流、MFA、忘记密码;短访问令牌 TTL(1 时)+ 长刷新(30 天)— 平衡安全和体验;用 PreSignUp Lambda — 验证邮件域、自动确认内部用户。其中首条「快速用托管 UI — 免费处理 OAuth 流、MFA、忘记密码」应作为团队默认规范写入 IaC 模板。

AWS Cognito 用户池 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS Cognito 用户池 多数提供免费套餐,先在免费额度内验证再放量。