AWS Cognito 联合身份池自定义身份验证提供程序退出/注销问题
AWS Cognito Federated Identity Pool Custom Authentication Provider Sing out / logout issue
我正在使用 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 调用以使用为我的联合身份池配置的经过身份验证的角色。
我遇到的问题是当我尝试注销用户时。我读了很多论坛帖子,但似乎没有人对此有明确的解释。我尝试在我的前端注销功能中使用以下内容但没有帮助:
creds.clearCachedId();
creds.refreshPromise();
显示 javascript aws-sdk 如何清除 session/authentication 信息并切换回未经身份验证的用户角色 arn 或注销用户并更新配置以便下次调用 AWS 服务( lambda.invoke 在我的例子中)将使用未经身份验证的角色 arn 而不是尝试使用经过身份验证的角色。因此,Cognito 似乎不知道退出,或者我错过了让它知道的电话。我希望 creds.clearCachedId() 会这样做,但显然不会。
原来我需要手动清除 creds.params :
creds.params['IdentityId'] = null;
creds.params['Logins'] = null;
我认为下面的方法可以做到,但显然不是。
creds.clearCachedId();
creds.refreshPromise();
我正在使用 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 调用以使用为我的联合身份池配置的经过身份验证的角色。 我遇到的问题是当我尝试注销用户时。我读了很多论坛帖子,但似乎没有人对此有明确的解释。我尝试在我的前端注销功能中使用以下内容但没有帮助:
creds.clearCachedId();
creds.refreshPromise();
显示 javascript aws-sdk 如何清除 session/authentication 信息并切换回未经身份验证的用户角色 arn 或注销用户并更新配置以便下次调用 AWS 服务( lambda.invoke 在我的例子中)将使用未经身份验证的角色 arn 而不是尝试使用经过身份验证的角色。因此,Cognito 似乎不知道退出,或者我错过了让它知道的电话。我希望 creds.clearCachedId() 会这样做,但显然不会。
原来我需要手动清除 creds.params :
creds.params['IdentityId'] = null;
creds.params['Logins'] = null;
我认为下面的方法可以做到,但显然不是。
creds.clearCachedId();
creds.refreshPromise();