Authentication AWS Cognito联合身份池自定义身份验证提供程序签出/注销问题

Authentication AWS Cognito联合身份池自定义身份验证提供程序签出/注销问题,authentication,lambda,federated-identity,aws-cognito,aws-sdk-js,Authentication,Lambda,Federated Identity,Aws Cognito,Aws Sdk Js,我使用nodejs lamdas从AWS Cognito获取身份验证令牌,在前端代码中我使用“AWS sdk”:“^2.74.0”javascript/typescript sdk: var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: environment.identityPoolId }) AWS.config.update({ region: environment.region, cr

我使用nodejs lamdas从AWS Cognito获取身份验证令牌,在前端代码中我使用“AWS sdk”:“^2.74.0”javascript/typescript sdk:

var creds = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: environment.identityPoolId
})

AWS.config.update({
    region: environment.region,
    credentials: creds
});

var lambda = new AWS.Lambda();
当我通过以下方式将令牌和标识id签名到我的AWS.CognitoIdentityCredentials.params时:

creds.params['IdentityId'] = output.identityId;
creds.params['Logins'] = {};
creds.params['Logins']['cognito-identity.amazonaws.com'] = output.token;
creds.expired = true;
我能够获得以下lamda.invoke调用,以使用为我的联合身份池配置的经过身份验证的角色arn。 我遇到的问题是当我尝试注销用户时。我读了很多论坛帖子,但似乎没有人对此有明确的解释。我尝试在我的前端注销功能中使用以下功能,但没有任何帮助:

creds.clearCachedId();
creds.refreshPromise();
creds.clearCachedId();
creds.refreshPromise();

任何显示javascript aws sdk如何清除会话/身份验证信息并切换回未经身份验证的用户角色arn或注销用户并更新配置的示例,以便下一次调用aws服务(在我的示例中为lambda.invoke)将使用未经身份验证的角色arn,而不是尝试使用经身份验证的角色。所以Cognito似乎没有意识到sigout,或者我错过了让它意识到的电话。我希望creds.clearCachedId()能做到,但显然不行

事实证明我需要手动清除creds.params:

    creds.params['IdentityId'] = null;
    creds.params['Logins'] = null;
我想下面的人可以做到,但显然不行