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

如何仅用User Pool ID、Client ID和密钥通过AWS CLI生成Cognito Access Token

用AWS CLI模拟Cognito Client Credentials模式获取Access Token

问题根源

你之前的CURL请求采用的是OAuth 2.0 Client Credentials授权模式,该模式允许客户端(应用程序)以自身身份直接获取Token,无需用户参与。而你尝试的ADMIN_USER_PASSWORD_AUTH是针对用户密码认证的流程,依赖用户凭证(用户名、密码),与当前需求完全不匹配,因此执行失败。

解决方案

方法1:使用AWS CLI http命令发送请求(推荐)

AWS CLI v2提供了aws http命令,可直接发送HTTP请求,完美替代curl实现需求:

aws http POST "https://MyEndPoint/oauth2/token" \
  --headers "Content-Type=application/x-www-form-urlencoded" \
  --body "grant_type=client_credentials&client_id=XXX&client_secret=YYY"

若需从环境变量读取参数,可调整为:

export CLIENT_ID="你的Client ID"
export CLIENT_SECRET="你的Client Secret"
export TOKEN_ENDPOINT="https://你的Cognito OAuth2 Token端点"

aws http POST "$TOKEN_ENDPOINT" \
  --headers "Content-Type=application/x-www-form-urlencoded" \
  --body "grant_type=client_credentials&client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}"

方法2:在AWS CLI环境中执行原curl命令

如果仅需在AWS CLI终端环境中运行,直接使用原curl命令即可:

client_id=XXX
client_secret=YYY
curl -s -X POST -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=${client_id}&client_secret=${client_secret}" \
  "https://MyEndPoint/oauth2/token"

关于admin-initiate-auth的说明

aws cognito-idp admin-initiate-auth支持的所有认证流(如ADMIN_USER_PASSWORD_AUTH、ADMIN_NO_SRP_AUTH等)均为以用户为中心的认证流程,必须依赖用户相关凭证。而Client Credentials模式是以客户端为中心的认证,仅验证客户端自身身份,因此无法通过该命令实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:45:37