【问题标题】:AWS Cognito Token with Authorization Code Grant PKCE returns {"error":"invalid_grant"}具有授权代码授予 PKCE 的 AWS Cognito 令牌返回 {"error":"invalid_grant"}
【发布时间】:2020-11-25 05:17:42
【问题描述】:

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

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。

非常感谢

【问题讨论】:

  • 你检查过Authorization Code grant在客户端是否开启了吗?
  • 是的,它已开启。允许的 OAuth 流 -(选中)授权码授予(未选中)隐式授予(未选中)客户端凭据
  • 您应该为该客户端生成秘密,以便授权授予工作。你能确认一下吗?
  • 在“常规”-> 应用程序客户端下。 “应用程序客户端密钥”表示“(无密钥)”。对吗?
  • @LouieMiranda 如果你能记录下遗漏的步骤以供后代使用,那就太好了

标签: amazon-web-services oauth-2.0 amazon-cognito


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2019-09-26
    • 2018-03-03
    • 2021-07-24
    • 1970-01-01
    • 2018-04-11
    • 2019-08-22
    相关资源
    最近更新 更多