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

AWS Cognito TOKEN端点无法将授权码转换为令牌问题排查

排查Cognito TOKEN端点返回unauthorized_client的问题

我来帮你梳理这个让人头疼的问题——毕竟授权码能成功拿到,但令牌请求却失败,大概率是配置或请求细节上的疏漏。结合你提到的实现代码,整理了几个核心排查方向:

  • 客户端认证类型不匹配
    先去Cognito用户池客户端的配置页看「客户端认证方式」:

    • 如果是CONFIDENTIAL类型(设置了客户端密钥),调用TOKEN端点时必须正确传递密钥;
    • 如果是PUBLIC类型(比如移动端应用常用的配置),绝对不能传客户端密钥,传了反而会触发unauthorized_client错误。
      你代码里用到了clientSecret,得确认客户端是不是允许使用密钥认证的类型。
  • 授权码的有效性问题
    授权码是一次性的,且默认只有5分钟有效期。如果这个授权码之前被用过,或者已经超时,TOKEN请求必然失败。要确保每次获取授权码后,立刻调用TOKEN端点,且只调用一次。

  • 重定向URI严格匹配
    Cognito对重定向URI的匹配要求非常苛刻,必须和你在客户端配置里填写的内容完全一致——包括协议、主机名、大小写,甚至有没有末尾的斜杠都不能错。比如你代码里的myapp://myhost,必须和控制台里的配置丝毫不差。

  • TOKEN请求的参数/格式错误
    调用TOKEN端点时,参数和认证方式必须符合要求:

    • 若使用client_secret_basic认证,需要把clientId:clientSecret做Base64编码,放在请求头的Authorization字段,格式为Basic <Base64编码字符串>;
    • 若使用client_secret_post,则要把client_id和client_secret作为表单参数提交;
    • 必须确保grant_type参数值为authorization_code,同时code参数是你刚拿到的授权码。
      任何参数名写错、格式不对,都可能触发认证失败。
  • 客户端OAuth权限配置
    检查客户端的「允许的OAuth流」,必须勾选「授权码流(Authorization Code Grant)」;同时「允许的OAuth范围」要包含你需要的权限(比如openid、email),范围不匹配也可能导致这个错误。

建议你先去Cognito控制台核对客户端配置,再抓包查看TOKEN请求的参数和头信息,对比官方文档确认格式——很多时候都是这些小细节出了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:13:33