首页 > 解决方案 > 具有授权代码授予 PKCE 的 AWS Cognito 令牌返回 {"error":"invalid_grant"}

问题描述

这个请求在几个月前有效,但是当我们再次尝试并直接使用 curl 时。它现在返回一个 invalid_grant。我一直在尝试搜索文档,但只看到以下文字而没有任何确切原因?

无效授予

客户端设置如下。

在此处输入图像描述

curl -X POST https://test-sso.auth.amazoncognito.com/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&client_id=xxxxxxx&redirect_uri=https%3A%2F%2F1c2d5a1xxxx.ngrok.io&code=SjkkDSSDs-b2A7nJPi3cmItyRZU4-b3GMjLls&code_verifier=sdXXXXXbUR2RmFIaTVQaVpTdndLOWoxOFU9Ig"

有人最近遇到过这种情况或已经解决了这个问题吗?我意识到,甚至删除了 PKCE。它仍然返回 invalid_grant。

非常感谢

标签: amazon-web-servicesoauth-2.0amazon-cognito

解决方案


使用 PKCE 时不需要客户端密码,它是专为无法保留的 UI 客户端设计的。

您的请求和整体行为看起来都完全正确:

  • 一个授权码只能使用一次
  • 如果您尝试再次使用它,则会收到 invalid_grant 错误

您是在真实 UI 中遇到错误还是仅使用 cURL 命令?如果它对您有帮助,您可以运行我的示例 UI 并跟踪 HTTP 消息,然后与您自己的解决方案进行比较。


推荐阅读