0

Ich verwende einen Nodejs-Lamdas, um Authentifizierungstokens von AWS Cognito zu erhalten, und im Front-End-Code verwende ich "aws-sdk": "^ 2.74.0 "javascript/Typoskript sdk:AWS Authentifizierter Cognito-Authentifizierungspool für föderierte Identitätspools Authentifizierungsanbieter für Singal/Logout

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

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

var lambda = new AWS.Lambda(); 

wenn ich mich abmelde das Token und Identität id meiner AWS.CognitoIdentityCredentials.params die folgende Art und Weise:

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

ich bin in der Lage, die folgenden lamda.invoke Anrufe zu erhalten authentifizierte Rolle zu verwenden, die für meine föderierte Identität konfiguriert ist p Ool. Das Problem, das ich habe, ist, wenn ich versuche, den Benutzer zu unterschreiben. Ich lese viele Forenbeiträge, aber niemand scheint eine klare Erklärung dazu zu haben. Ich habe versucht, die folgenden in meinem Frontend-Logout-Funktion, die nicht geholfen haben:

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

zeigt alle Beispiele, wie die Javascript aws-sdk die Sitzung/Authentifizierungsinformationen würden löschen und wechseln Sie wieder zu authentifizierte Benutzerrolle arn oder Abmelde Benutzer und aktualisieren Sie die Konfiguration, so dass der nächste Aufruf eines AWS-Dienstes (Lambda.Invoice in meinem Fall) würde die nicht authentifizierte Rolle arn, anstatt zu versuchen, die authentifizierte Rolle zu verwenden. Es scheint also, dass Cognito sich des Sigouts nicht bewusst ist, oder ich vermisse den Anruf, um es bewusst zu machen. Ich hatte gehofft, creds.clearCachedId() würde es aber anscheinend nicht tun.

Antwort

0

Nun stellt sich heraus, dass ich manuell die creds.params löschen benötigt:

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

Ich würde denken, die unten würde es tun, aber anscheinend nicht.

creds.clearCachedId(); 
creds.refreshPromise(); 
Verwandte Themen