0

J'utilise un nodejs lamdas pour obtenir des jetons d'authentification d'AWS Cognito et dans le code frontal j'utilise le "aws-sdk": "^ 2.74.0 "javascript/tapuscrit sdk:AWS Cognito Federated Identity Pool Fournisseur d'authentification personnalisé Problème de sortie/déconnexion

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

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

var lambda = new AWS.Lambda(); 

quand je signe l'identifiant et l'identité symbolique à mes AWS.CognitoIdentityCredentials.params la manière suivante:

creds.params['IdentityId'] = output.identityId; 
creds.params['Logins'] = {}; 
creds.params['Logins']['cognito-identity.amazonaws.com'] = output.token; 
creds.expired = true; 

Je suis en mesure d'obtenir les appels suivants lamda.invoke utiliser le rôle authentifié arn configuré pour mon identité fédérée p ool. Le problème que j'ai est quand j'essaye de signer l'utilisateur dehors. J'ai lu de nombreux messages sur les forums mais personne ne semble avoir une explication claire à ce sujet. J'ai essayé d'utiliser ce qui suit dans ma fonction avant la fin de fermeture de session qui n'a pas aidé:

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

des exemples montrant comment le javascript aws-sdk éclaircirait les informations de session/authentification et revenir à arn rôle utilisateur non authentifié ou déconnexion user et mettre à jour la config pour que l'appel suivant d'un service AWS (lambda.invoke dans mon cas) utilise le rôle arn non authentifié au lieu d'essayer d'utiliser le rôle authentifié. Il semble donc que Cognito ne soit pas au courant du sigout, ou que je rate l'appel pour le rendre conscient. J'espérais que creds.clearCachedId() le ferait mais apparemment pas.

Répondre

0

Eh bien, il s'avère que je devais effacer les creds.params manuellement:

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

Je pense le faire serait ci-dessous, mais apparemment pas.

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