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

AWS Cognito用户确认时SecretHash不匹配错误的排查求助

AWS Cognito 用户确认时 SecretHash 不匹配问题排查

错误信息

{"errorMessage": "SecretHash does not match for the client: [REDACTED] (Service: AWSCognitoIdentityProvider; Status Code: 400; Error Code: NotAuthorizedException; Request ID: [REDACTED]; Proxy: null)","errorType": "com.amazonaws.services.cognitoidp.model.NotAuthorizedException","stackTrace": [...]}

可能的问题及排查方向

  • SecretHash 计算参数不一致
    确认注册和用户确认两个步骤中,计算SecretHash时使用的客户端ID、客户端密钥、用户名三者完全一致:

    • Cognito用户名默认大小写敏感,确保两次使用的用户名大小写完全相同
    • 若注册时用邮箱作为用户名,确认时必须使用相同的邮箱字符串,不能替换为其他用户标识
  • 客户端配置不匹配

    • 检查Cognito应用客户端是否启用了客户端密钥:如果客户端未设置密钥,请求中不需要传递SecretHash,强行传入会导致不匹配
    • 确认客户端的认证流程配置(ALLOW_REFRESH_TOKEN_AUTH、ALLOW_USER_PASSWORD_AUTH)是否要求必须传递SecretHash,确保代码逻辑和后台配置一致
  • SecretHash 实现逻辑错误
    核对calculateSecretHash方法是否严格遵循AWS规范:

    • 算法必须为HMAC-SHA256
    • 消息内容为用户名 + 客户端ID的拼接字符串
    • 密钥为Cognito应用客户端的客户端密钥
    • 最终结果需进行Base64编码
      可以手动用在线HMAC工具计算对比,验证代码生成的SecretHash是否正确
  • 请求参数传递错误

    • 确认confirmSignUp请求中传入的SecretHash是基于当前待确认用户的用户名计算的,而非复用注册时的旧值
    • 检查SecretHash是否存在字符串转义、编码异常(比如多余空格、特殊字符未正确处理)

验证建议

  1. 手动计算SecretHash:将用户名+客户端ID作为输入消息,客户端密钥作为密钥,用HMAC-SHA256算法计算后Base64编码,和代码生成的值对比
  2. 开启CloudTrail日志,查看Cognito请求中的SecretHash参数是否和预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:12:38