【问题标题】:AWS Cognito Federated Identity Pool Custom Authentication Provider Sing out / logout issueAWS Cognito 联合身份池自定义身份验证提供程序退出/注销问题
【发布时间】:2017-12-13 02:44:08
【问题描述】:

我正在使用 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();

显示 javascript aws-sdk 如何清除会话/身份验证信息并切换回未经身份验证的用户角色 arn 或注销用户并更新配置以便下次调用 AWS 服务(在我的情况下为 lambda.invoke)的任何示例使用未经身份验证的角色 arn 而不是尝试使用经过身份验证的角色。所以看起来 Cognito 不知道 sigout,或者我错过了让它知道的电话。我希望 creds.clearCachedId() 会这样做,但显然不是。

【问题讨论】:

    标签: authentication lambda federated-identity aws-cognito aws-sdk-js


    【解决方案1】:

    原来我需要手动清除 creds.params :

        creds.params['IdentityId'] = null;
        creds.params['Logins'] = null;
    

    我认为下面会这样做,但显然不是。

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

    【讨论】:

      猜你喜欢
      • 2020-09-28
      • 2018-04-05
      • 2013-11-15
      • 1970-01-01
      • 2018-10-08
      • 2023-04-03
      • 2011-05-30
      • 2018-11-07
      • 2012-04-05
      相关资源
      最近更新 更多