Amazon Cognito 热门2014年〜
为 Web 和移动应用程序提供认证、授权和用户管理的服务
它能做什么
Amazon Cognito 是一项为 Web 和移动应用程序提供用户注册、登录和访问控制功能的服务。用户池(User Pool)管理用户目录和认证流程,身份池(Identity Pool)为认证后的用户提供临时 AWS 凭证。支持社交登录(Google、Facebook、Apple)和企业 SAML/OIDC 联合认证。
使用场景
用于 Web 应用和移动应用的用户注册/登录功能实现、社交登录集成、多因素认证(MFA)的添加、从前端应用安全访问 AWS 资源(S3、DynamoDB 等)、企业单点登录(SSO)的实现等。
日常类比
可以将其比作大楼的门禁系统。用户池就像发放门禁卡(账户)和验证身份的前台。身份池就像根据门禁卡的权限级别决定可以进入哪些楼层(AWS 资源)的电梯控制系统。还支持用其他大楼的门禁卡(社交登录)进入。
什么是 Cognito
Amazon Cognito 是一项为应用程序添加认证和授权功能的服务。从零开始构建用户管理系统需要处理密码哈希、令牌管理、MFA 等复杂的安全要求。Cognito 将这些作为托管服务提供,开发者可以专注于应用程序的业务逻辑。
用户池与身份池
用户池是管理用户注册、登录和个人资料的用户目录。提供邮箱/密码认证、MFA、密码策略、邮箱验证等功能。身份池为通过用户池或社交提供者认证的用户发放临时 AWS 凭证。通过 IAM 角色控制可以访问哪些 AWS 资源。两者可以组合使用,也可以单独使用。
社交登录与联合认证
Cognito 支持 Google、Facebook、Apple、Amazon 等社交身份提供者的登录。还支持企业 SAML 2.0 和 OpenID Connect 提供者的联合认证。用户可以使用现有账户登录,无需创建新账户,降低注册门槛。 关于社交登录与联合认证的实现方法,也可以参考相关书籍(Amazon)。
开始使用
在 Cognito 控制台中创建用户池,配置登录选项(邮箱/用户名)和安全设置(密码策略、MFA)。创建应用客户端并获取客户端 ID。在前端应用中使用 Amplify 库或 AWS SDK 集成登录界面。Cognito 还提供预构建的托管 UI,无需自行开发登录页面即可快速集成。
注意事项
- 用户池的前 50,000 个月活跃用户免费(不含高级安全功能),适合中小规模应用
- 托管 UI 的自定义程度有限,如需完全自定义登录界面请使用 SDK 自行实现
- 用户池创建后部分设置(如用户名属性)无法更改,请在创建前仔细规划