2017-09-29 3 views
0

Ich suche nur nach Amazon Cognito Identity Pools.Können Sie versehentlich einen Benutzer mit Cognito Identity Pools irreversibel trennen?

Aus meiner Sicht wird konzeptionell die föderierte ID die einzige wahre ID des Benutzers in Ihrer Anwendung. Wo immer Sie Benutzerdaten speichern, sollten Sie sie mit dieser föderierten ID verknüpfen. Wenn Sie also sagen, dass ein Facebook- und ein Twitter-Konto mit einer bestimmten Identität verknüpft sind, kann sich der Benutzer anmelden und seine Daten in der Anwendung sehen.

Ich las letzte Nacht (und jetzt für das Leben von mir kann nicht finden, wo, aber es war offizielle Dokumentation), dass, wenn Sie alle Logins für eine Identität im Identitätspool entfernen, dann ist diese Identität dann verwaist und nicht auffindbar. Macht Sinn ... Es gibt keine Logins mehr, die mit dem tatsächlichen Menschen assoziiert sind, der es besitzt.

Zur Veranschaulichung, so legen Sie Ihre Logins im Javascript SDK fest.

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
     IdentityPoolId: 'IDENTITY_POOL_ID', 
     Logins: { 
     'graph.facebook.com': response.authResponse.accessToken, 
     'other.provider':'other.provider.token', 
     // etc 
     } 
    }); 

Wo die Logins Objekt viele verschiedene Anbieter gesetzt sowie Facebook (Google, Twitter, etc.) haben könnte.

Das ist alles gut und gut, aber was passiert, wenn in einer der vielen verschiedenen Anwendungen, die Sie möglicherweise mit dem Identitätspool haben, ein Bug eingeführt wird, bei dem das Array von Logins irgendwie leer ist und durchgesendet wird zum AWS Identity Server.

Bedeutet dies, dass diese Identität, die Sie verwendet hätten, um die gesamte Erfahrung der Benutzer mit Ihrer App (wie ihr Benutzerprofil, Kontodaten, möglicherweise alles einschließlich sensible Daten) aufzubauen, irreversibel getrennt wäre?

Ich hoffe, ich träume hier einen unmöglichen Worst Case. Kann jemand meine Bedenken lindern?

Antwort

1

Wenn die "Logins" -Karte beim Aufruf von AWS.CognitoIdentityCredentials() gelöscht wird (nicht vorhanden ist), werden die Anmeldeinformationen des Identity Providers nicht authentifiziert. Der Konfiguration Ihres Identitätspools in Cognito wird nichts passieren. Sobald das Problem behoben ist, müssen sich alle Benutzer erneut anmelden. Stellen Sie sich die Logins-Karte als Hinweis für Cognito vor, bei dem Sie den Identity Provider verwenden, und nicht eine Anweisung zum Ändern der Cognito-Konfiguration.

+0

Vielen Dank John. Sagen Sie also, nachdem die Karte gelöscht wurde, hat sich der Benutzer bei Facebook angemeldet. Die Authentifizierung wird natürlich fehlschlagen. Aber wie würden Sie dann das Facebook-Login an die richtige IdentityId "anhängen"? Wie kann ich derzeit nur verstehen, mit welcher IdentityId es verknüpft werden sollte, wenn es bereits aktuell damit verbunden ist? Sie müssten woanders schon eine doppelte Verknüpfung zwischen dem IdentityId und dem Facebook Login-Recht erstellt haben? Entschuldigung, wenn ich hier etwas übersehen habe. – Chris

+0

Korrigieren Sie einfach die fehlende Logins-Map in Ihrem Client-Quellcode (JavaScript) und loggen Sie sich erneut ein. Die Logins-Karte ist erforderlich, um Identitätsanbieter (IDP) von Drittanbietern zu authentifizieren. Die tatsächlichen IDP-Links werden in Cognito Federated Identities mit IDP-Berechtigungsnachweisen von Drittanbietern gespeichert. Wenn Sie jedoch die IDP-Berechtigungsnachweise in Cognito Federated Identities löschen, fügen Sie sie einfach wieder hinzu. Cognito verwendet das IDP JWT (Token) zum Zuordnen von Identitäten. Hinweis: Ich glaube nicht, dass Cognito beim Entfernen eines IDP Identitäten löscht. Ich habe nie getestet, einen IDP zu entfernen und dann neu hinzuzufügen. –

+0

Hinweis: Wenn ich Logins-Map sage, meine ich den Parameter, den Sie an AWS.CognitoIdentityCredentials() übergeben, und nicht den IDP, der in Cognito gespeichert ist. –

Verwandte Themen