dai*_*a99 5 amazon-web-services amazon-cognito aws-lambda
我知道有两种方法来验证用户身份并获取access token,一种是通过托管 UI,另一种是使用各种提供的 SDK。
access token我正在寻找的是直接使用用户凭据获取的端点。
POST https://that-special-endpoint.com/login
{
username: "example@email.com",
password: "Abc123456",
...client ID, etc.
}
Run Code Online (Sandbox Code Playgroud)
我已经搜索了一段时间但找不到如何执行此操作。由于我不知道的一些安全问题,这是不可能的吗?
我确实考虑过创建 Lambda API 并使用 Cognito SDK 来满足我的用例,但我不确定这是否可取......
类似的问题在这里得到了回答。您可以访问https://cognito-idp.[region].amazonaws.com/调用InitiateAuth和RespondToAuthChallengeAPI。
发起认证
aws-auth-data.json{
"AuthParameters": {
"USERNAME": "your-email@example.com",
"PASSWORD": "your-first-password",
"SECRET_HASH": "......(required if the app client is configured with a client secret)"
},
"AuthFlow": "USER_PASSWORD_AUTH",
"ClientId": "5m........................"
}
Run Code Online (Sandbox Code Playgroud)
https://cognito-idp.us-east-2.amazonaws.com/(如果用户池位于us-east-2区域)以调用InitiateAuthAPI 并启动身份验证流程。curl -X POST --data @aws-auth-data.json \
-H 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' \
-H 'Content-Type: application/x-amz-json-1.1' \
https://cognito-idp.us-east-2.amazonaws.com/
Run Code Online (Sandbox Code Playgroud)
{
"AuthenticationResult": {
"AccessToken": "eyJra........",
"ExpiresIn": 3600,
"IdToken": "eyJra........",
"RefreshToken": "eyJjd........",
"TokenType": "Bearer"
},
"ChallengeParameters": {}
}
Run Code Online (Sandbox Code Playgroud)
响应验证挑战
您可能会收到挑战作为InitiateAuth回应。例如,当您第一次尝试“InitiateAuth”时,系统会要求您更改密码:
{
"ChallengeName": "NEW_PASSWORD_REQUIRED",
"ChallengeParameters": {
"USER_ID_FOR_SRP": "abababab-......",
"requiredAttributes": "[]",
"userAttributes": "{\"email_verified\":\"true\",\"email\":\"your-email@example.com\"}"
},
"Session": "DNdY......"
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,更改密码RespondToAuthChallenge即可获得令牌。
{
"ChallengeName": "NEW_PASSWORD_REQUIRED",
"ChallengeResponses": {
"USERNAME": "your-email@example.com",
"NEW_PASSWORD": "your-second-password"
},
"ClientId": "5m........................",
"Session": "DNdYN...(what you got in the preceding response)"
}
Run Code Online (Sandbox Code Playgroud)
curl -X POST --data @aws-change-password.json \
-H 'X-Amz-Target: AWSCognitoIdentityProviderService.RespondToAuthChallenge' \
-H 'Content-Type: application/x-amz-json-1.1' \
https://cognito-idp.us-east-2.amazonaws.com/
Run Code Online (Sandbox Code Playgroud)
也可以看看:
https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html
| 归档时间: |
|
| 查看次数: |
3235 次 |
| 最近记录: |