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

ASP.NET Core调用AWS Cognito获取令牌报用户名密码错误如何解决

ASP.NET Core调用AWS Cognito获取令牌抛出NotAuthorizedException(用户名或密码错误)排查方案

报错原文:Amazon.CognitoIdentityProvider.Model.NotAuthorizedException: Incorrect username or password

一、基础参数正确性校验

  • 核对传入的username:必须和Cognito用户池中存储的用户标识完全一致,注意区分大小写、排查前后隐形空格,若用户池配置了邮箱/手机号作为登录别名,不要误传用户昵称等非标识字段。如果是ASP.NET Core模型绑定传参,检查路由、表单编码是否导致参数被截断。
  • 核对传入的password:确认全角/半角字符、大小写状态正确,排查特殊字符(&、+、空格等)在传输过程中被转义丢失的问题,可通过记录密码长度、字符类型做校验,禁止明文打印密码到日志。
  • 核对传入的clientId:确认是当前环境对应用户池下的应用客户端ID,测试/生产环境clientId混用、跨用户池拿错clientId是高频低级错误。

二、Cognito侧配置排查

  • 检查用户状态:在Cognito控制台找到目标用户,确认状态为CONFIRMED。如果用户状态是FORCE_CHANGE_PASSWORD(首次登录需改密)、UNCONFIRMED(未验证),直接传初始密码登录就会抛出该错误,必须先走对应挑战流程完成账号激活/改密。
  • 检查应用客户端认证流配置:确认客户端已开启你代码中使用的认证流开关,比如用USER_PASSWORD_AUTH、ADMIN_NO_SRP_AUTH流时没在控制台开启对应权限,会直接返回用户名密码错误的提示,不会明确告知是认证流未开启。
  • 重点排查客户端密钥配置:如果创建应用客户端时生成了Client Secret,调用接口时必须传计算后的SECRET_HASH参数,缺省该参数时无论用户名密码是否正确,都会返回用户名密码错误。SECRET_HASH计算逻辑为以Client Secret为密钥,对用户名+clientId拼接字符串做HMAC-SHA256签名后转Base64,ASP.NET Core实现代码如下:
public static string CalculateCognitoSecretHash(string clientId, string clientSecret, string username)
{
    using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(clientSecret));
    var hashData = hmac.ComputeHash(Encoding.UTF8.GetBytes($"{username}{clientId}"));
    return Convert.ToBase64String(hashData);
}

计算完成后将值放入AuthParameters字典,key为SECRET_HASH随请求一起传入即可。

  • 检查账号锁定与权限策略:如果账号因多次输错密码触发Cognito锁定策略,锁定期间即使输入正确密码也会返回该错误,不会单独提示账号锁定;如果用户属于被封禁的用户组,也会返回同样报错。
  • 检查用户认证类型:如果用户是通过SAML、社交登录等联邦身份导入的,没有在Cognito本地存储密码,直接走用户名密码流登录必然报错,联邦用户需要走对应身份提供商的登录流程。
  • 检查MFA配置:如果用户池开启了强制MFA,用户未完成MFA配置的场景下,部分情况会返回该错误,可查看接口返回的ChallengeName字段,确认是否是MFA相关挑战要求。

三、代码与SDK配置排查

  • 确认AWS SDK调用的区域和Cognito用户池所在区域一致,跨区域调用即使参数全对也会返回认证错误。
  • 检查SDK使用的IAM凭证权限:如果调用的是AdminInitiateAuth接口,调用方持有的IAM身份必须拥有cognito-idp:AdminInitiateAuth权限,权限不足时部分场景不会直接返回权限错误,而是提示用户名密码不正确。

快速验证方法:在Cognito控制台手动给测试用户重置一个已知密码,用AWS CLI或Postman直接构造请求调用登录接口,如果工具调用可以成功返回令牌,说明Cognito侧配置无问题,故障点在ASP.NET Core项目的参数传递、签名计算或SDK配置环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:06:27