AWS - Cognito 身份验证 - Curl 调用 - 不使用 CLI 生成令牌 - 无客户端密码
AWS - Cognito Authentication - Curl Call - Generate Token Without CLI - No Client Secret
我创建了一个 API 网关,并在那里应用了 Cognito 身份验证。这里有 API 调用工作我正在使用 AWS CLI 获取令牌,这是我的 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
总结一下:
我想 Id_Token 在没有客户端密钥的情况下使用 Curl 或 Postman。
提前致谢
您可以使用以下请求对用户进行身份验证。
这是 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": {}
}
在这里直接分享curl可能对大家有帮助
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/
文件jsonuser-data.json
{"AuthParameters" : {"USERNAME" : "sadfsf", "PASSWORD" : "password"}, "AuthFlow" : "USER_PASSWORD_AUTH", "ClientId" : "csdfhripnv7sq027kktf75"}
确保您的应用程序客户端不包含应用程序秘密或创建没有秘密的新应用程序。还在应用程序内部启用 USER_PASSWORD_AUTH
我创建了一个 API 网关,并在那里应用了 Cognito 身份验证。这里有 API 调用工作我正在使用 AWS CLI 获取令牌,这是我的 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
总结一下: 我想 Id_Token 在没有客户端密钥的情况下使用 Curl 或 Postman。
提前致谢
您可以使用以下请求对用户进行身份验证。 这是 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": {}
}
在这里直接分享curl可能对大家有帮助
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/
文件jsonuser-data.json
{"AuthParameters" : {"USERNAME" : "sadfsf", "PASSWORD" : "password"}, "AuthFlow" : "USER_PASSWORD_AUTH", "ClientId" : "csdfhripnv7sq027kktf75"}
确保您的应用程序客户端不包含应用程序秘密或创建没有秘密的新应用程序。还在应用程序内部启用 USER_PASSWORD_AUTH