You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cognito用户池默认是否真的不区分大小写?登录异常求助

问题(翻译)

我创建了一个将邮箱设为唯一登录字段的Amazon Cognito用户池,但使用包含大写字母的邮箱登录时,收到「用户名或密码错误」的提示。根据Cognito文档说明,通过AWS管理控制台创建的用户池默认不区分大小写,此时user@example.com与User@example.com应视为同一用户,preferred_username和email属性也不区分大小写。我查看了用户池配置,只看到"UsernameAttributes": ["email"],没找到大小写相关的配置项。请问有什么方法可以确认邮箱登录的默认行为?

解决方案

确认Cognito邮箱登录大小写行为的方法
  • 通过API验证用户一致性
    调用AdminGetUser API,分别传入小写和大写格式的邮箱作为Username参数。如果两次请求返回的是同一个用户的完整数据,说明用户池默认遵循不区分大小写规则;若其中一次返回用户不存在,则意味着用户池实际启用了大小写敏感(比如通过CLI或CloudFormation创建时手动设置了CaseSensitive为true,控制台创建的默认值为false,但不排除后续配置被修改)。

  • 用CLI查看完整用户池配置
    控制台界面不会直接展示CaseSensitive字段,可通过AWS CLI命令获取完整配置:

    aws cognito-idp describe-user-pool --user-pool-id <你的用户池ID>
    

    在返回的JSON结果中查找CaseSensitive字段:

    • 值为false:符合控制台创建的默认规则,不区分大小写
    • 值为true:用户池启用了大小写敏感,此状态下大小写邮箱会被视为不同用户
  • 测试注册登录流程
    用小写邮箱注册新用户,随后尝试用对应大写邮箱登录:

    • 登录成功:说明默认行为是不区分大小写,之前的报错可能是客户端代码或自定义触发器导致的问题
    • 登录失败:检查是否存在预认证Lambda触发器,是否在触发器中添加了大小写校验逻辑,拦截了非小写邮箱的登录请求
  • 检查用户属性存储状态
    进入AWS控制台的Cognito用户池,找到目标用户,查看email属性的实际存储值。若存储的是小写,但大写邮箱登录失败,排查客户端代码是否在请求前未统一将邮箱转为小写,或是否有自定义认证流程覆盖了Cognito的默认大小写处理逻辑。

内容的提问来源于stack exchange,提问作者LurenzZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:57:14