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

AWS Cognito中授权码兑换访问令牌仅能执行一次吗?

AWS Cognito授权码兑换访问令牌是否仅能执行一次?

问题描述

通过AWS Cognito托管UI完成认证后,会被重定向至包含授权码的回调URL,示例如下:

https://app.example.com/?code=16036818-2t63-4a31-98b0-e3c21aa9a24d

使用Curl工具调用令牌接口可成功获取Access Token,请求示例:

curl --location --request POST 'https://my-app.auth.eu-west-1.amazoncognito.com/oauth2/token' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'client_id=47akl6j7j4grj2js419' \
--data-urlencode 'code=16036818-2t63-4a31-98b0-e3c21aa9a24d' \
--data-urlencode 'redirect_uri=https://app.example'

但重复执行该请求时,会返回如下错误:

{
    "error": "invalid_grant"
}

疑问:该授权码兑换访问令牌的操作是否仅能执行一次?


回答

是的,AWS Cognito的授权码(authorization code)确实只能被使用一次。

这是OAuth 2.0授权码流程的标准安全设计:授权码作为一次性临时凭证,一旦被用来兑换访问令牌(Access Token)和刷新令牌(Refresh Token),就会被Cognito立刻标记为失效,再次使用必然返回invalid_grant错误。

这种机制的核心目的是防范授权码泄露后的滥用风险——即便攻击者窃取到已使用过的授权码,也无法通过它获取有效令牌,从而大幅提升认证流程的安全性。

如果后续需要更新令牌,应该使用首次兑换得到的Refresh Token发起请求,将grant_type参数设为refresh_token即可,无需也不能重复使用授权码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:33:20