Lambda Cognito-密码更改-无效的访问令牌

时间:2018-10-25 11:25:40

标签: aws-lambda amazon-cognito

我正在尝试使用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"

1 个答案:

答案 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
});