具有授权代码授予 PKCE 的 AWS Cognito 令牌返回 {"error":"invalid_grant"}

Lou*_*nda 8 amazon-web-services oauth-2.0 amazon-cognito

这个请求在几个月前有效,但是当我们再次尝试并直接使用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"
Run Code Online (Sandbox Code Playgroud)

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

非常感谢

Gar*_*her 0

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

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

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

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