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

AWS Cognito调用/oauth2/token时遇unauthorized_client错误求助

解决Cognito授权码流返回unauthorized_client问题

我之前也踩过Cognito这个unauthorized_client的坑,明明勾选了授权码类型还是报错,咱们一步步来排查:

1. 确认应用客户端配置是否真的生效

有时候Cognito的配置保存会有延迟,或者可能你没点保存更改就离开了页面。重新进入你的应用客户端的「App client settings」页面,逐一核对:

  • 「Authorization Code Grant」确实处于勾选状态
  • 「Allowed OAuth Scopes」至少勾选了openid(授权码流必须要有这个基础权限)
  • 回调URLhttps://localhost和你请求里的redirect_uri完全一致——注意大小写、有没有多余的斜杠,比如不能是https://localhost/(末尾多了斜杠)

2. 检查授权码的有效性

授权码是一次性的,而且有效期只有5分钟。如果你之前用过这个code_uuid,或者它已经过期,也会返回这个错误。建议重新走一遍授权流程,获取新的授权码再发起请求。

3. 核对无密钥客户端的参数匹配

你创建的是无密钥应用客户端,要确认:

  • 应用客户端的「Generate client secret」是未勾选状态
  • 请求里不要加client_secret参数(因为无密钥客户端不需要这个),你的curl请求里已经做到了这一点,这部分没问题,但要确保没有不小心添加这个参数。

4. 仔细验证请求参数的细节

再逐行检查你的curl命令:

curl -X POST https://{{user_pool_domain}}.auth.us-east-2.amazoncognito.com/oauth2/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code&redirect_uri=https%3A%2F%2Flocalhost&code={{code_uuid}}&client_id={{user_pool_client_id}}'
  • 确认user_pool_domain和user_pool_client_id替换成了实际的正确值,没有打错字符
  • 确认授权时的redirect_uri和请求里的完全一致——比如你跳转到授权页面时,URL里的redirect_uri参数是不是也是https://localhost?

5. 检查用户池域名是否生效

刚创建的Cognito用户池域名可能需要几分钟才能完成域名解析。你可以访问https://{{user_pool_domain}}.auth.us-east-2.amazoncognito.com/.well-known/openid-configuration,如果能正常返回JSON格式的配置信息,说明域名已经生效;如果返回404或者错误,等几分钟再重试。

如果以上都排查过还是有问题,建议删除当前应用客户端重新创建一个,有时候Cognito的客户端配置会出现奇怪的缓存问题,重新创建往往能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:47:33