我正在尝试使用Lambda函数更改用户密码,该功能已授予我对Congnito的完全访问权限。方法和参数如下。
Method: cognitoidentityserviceprovider.changePassword
Paramter:
{
AccessToken: data.AccessToken, /* required */
PreviousPassword: data.PreviousPassword, /* required */
ProposedPassword: data.ProposedPassword /* required */
}
该用户是经过身份验证的用户,在我的应用程序中具有有效的访问令牌。我从用户身份验证数据中获取访问令牌,并将其与其余参数一起发送给lambda。
由于某种原因(我不知道:D),changePassword方法返回错误如下:
code:"NotAuthorizedException"
message:"Invalid Access Token"
答案 0 :(得分:0)
如此处所示,我将使用管理员Auth Api。使用REFRESH_TOKEN_AUTH作为身份验证类型发送呼叫以获取新令牌。然后获取访问令牌,然后重试。
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html
var params = {
AuthFlow: USER_SRP_AUTH | REFRESH_TOKEN_AUTH | REFRESH_TOKEN | CUSTOM_AUTH | ADMIN_NO_SRP_AUTH | USER_PASSWORD_AUTH, /* required */
ClientId: 'STRING_VALUE', /* required */
UserPoolId: 'STRING_VALUE', /* required */
AnalyticsMetadata: {
AnalyticsEndpointId: 'STRING_VALUE'
},
AuthParameters: {
'<StringType>': 'STRING_VALUE',
/* '<StringType>': ... */
},
ClientMetadata: {
'<StringType>': 'STRING_VALUE',
/* '<StringType>': ... */
},
ContextData: {
HttpHeaders: [ /* required */
{
headerName: 'STRING_VALUE',
headerValue: 'STRING_VALUE'
},
/* more items */
],
IpAddress: 'STRING_VALUE', /* required */
ServerName: 'STRING_VALUE', /* required */
ServerPath: 'STRING_VALUE', /* required */
EncodedData: 'STRING_VALUE'
}
};
cognitoidentityserviceprovider.adminInitiateAuth(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});