我创建了一个API网关,并在此应用了Cognito身份验证。为了使API调用正常工作,我正在使用AWS CLI来获取Token,这是我的CLI代码
aws cognito-idp admin-initiate-auth --user-pool-id us-west-2_leb660O8L --client-id 1uk3tddpmp6olkpgo32q5sd665 --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=myusername,PASSWORD=mypassword
现在,我想使用CURL调用代替此CLI调用。我已经找到了代码,但是这里都需要客户端密码。我没有客户端机密,因为我的用户池具有启用登录功能以进行基于服务器的身份验证。
请指导我如何使用它。
我经历了 https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html [调用IntiateAuth或AdminIntiateAuth的端点是什么] 和 https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html
总结一下: 我想在没有客户端机密的情况下使用Curl或Postman获得Id_Token。
预先感谢
答案 0 :(得分:1)
您可以通过以下请求对用户进行身份验证。 这是InitiateAuth请求的终结点。
希望这对您有用
Method: POST
Endpoint: https://cognito-idp.{REGION}.amazonaws.com/
Content-Type: application/x-amz-json-1.1
X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth
Body:
{
"AuthParameters" : {
"USERNAME" : "YOUR_USERNAME",
"PASSWORD" : "YOUR_PASSWORD"
},
"AuthFlow" : "USER_PASSWORD_AUTH", // Don't have to change this if you are using password auth
"ClientId" : "APP_CLIENT_ID"
}
以及以下响应
{
"AuthenticationResult": {
"AccessToken": "YOUR_ACCESS_TOKEN",
"ExpiresIn": 3600,
"IdToken": "YOUR_ID_TOKEN",
"RefreshToken": "YOUR_REFRESH_TOKEN",
"TokenType": "Bearer"
},
"ChallengeParameters": {}
}
答案 1 :(得分:0)
仅在此处共享直接卷曲可能对任何人都有帮助
curl -X POST --data @user-data.json \
-H 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' \
-H 'Content-Type: application/x-amz-json-1.1' \
https://cognito-idp.<just-replace-region>.amazonaws.com/
文件json user-data.json
{"AuthParameters" : {"USERNAME" : "sadfsf", "PASSWORD" : "password"}, "AuthFlow" : "USER_PASSWORD_AUTH", "ClientId" : "csdfhripnv7sq027kktf75"}
确保您的应用程序客户端不包含应用程序秘密或创建没有秘密的新应用程序。还在应用内启用USER_PASSWORD_AUTH