Feb 11, 2021
Die Antwort ist nicht so einfach, daher werden wir die Frage zunächst in kleinere Teile aufteilen und dann in der Schlussfolgerung die Antwort geben.
1. Ein vollständig entwickeltes System für die Erstellung von Benutzerkonten und die Möglichkeit, dass sich die Benutzer mit ihren E-Mail-Adressen oder externen Identitätsanbietern wie Facebook und Google anmelden können.
2. Das System sollte auf mehreren Domänen einsetzbar und leicht zu pflegen sein und gleichzeitig die Benutzer aus verschiedenen Domänen in einer einzigen Datenbank verwalten. Das bedeutet, dass ein Benutzer mit einer E-Mail-Adresse in zwei verschiedenen Domänen als ein anderer Benutzer betrachtet wird.
Wir haben in Erwägung gezogen, ein System zur Verwaltung des Benutzerzugangs von Grund auf neu aufzubauen. Das bedeutet, dass wir alle unten aufgeführten Funktionen manuell implementieren müssten:
Glücklicherweise haben wir ein wenig recherchiert und herausgefunden, dass Amazon Cognito alle oben genannten Funktionen mit nur wenigen Klicks bereitstellen kann.
Amazon Cognito ist ein Service, der eine einfache und sichere Benutzerverwaltung bietet. Er unterstützt die Anmeldung bei Identitätsanbietern wie Facebook und Google und ist eine kostengünstige Lösung.
Amazon Cognito ist wirklich einfach einzurichten und zu nutzen. Sie fordern einfach den entsprechenden Cognito-Benutzerpool an, um die Token abzurufen, und verwenden diese Token für den Zugriff auf Ihre Anwendung. In unserem Fall, da wir API Gateway verwenden, richten wir den Cognito User Pool als Autorisierer in jeder Methodenanforderung ein, die zum privaten Bereich der Anwendung führt, der nur für angemeldete Benutzer zugänglich ist. Ein ähnliches Beispiel ist in der folgenden Grafik dargestellt:

Die vollständige Lösung umfasst einen Microservice, der auf ECS bereitgestellt wird. Der Microservice verwaltet die Erstellung von Benutzern im entsprechenden Cognito User Pool und gibt Login-Token und persönliche Daten für den authentifizierten Benutzer zurück.
Wenn ein Benutzer ein Konto erstellt oder sich anmeldet, werden die Attribute der Domäne zusammen mit den Anmelde-/Registrierungsdaten weitergeleitet. Anschließend stellt der Dienst die Autorisierungs-Token aus dem entsprechenden Cognito User Pool aus. Vor dem Microservice richten wir zwei API-Gateways ein. Eines davon bedient die öffentlich zugänglichen APIs wie die Registrierungs- und die Login-API, die keinen autorisierten Zugriff erfordern. Das andere API-Gateway hat Cognito User Pool als Autorisierer eingestellt.

Und wie haben wir das Problem der Mehrmandantenfähigkeit gelöst?
Hätten wir uns für einen Einzelbenutzer-Pool mit allen Benutzern an einem Ort entschieden, hätten wir die Anmeldung mit Benutzernamen und Passwort statt mit E-Mail-Adresse und Passwort erlaubt. Dies würde uns auch daran hindern, die Anmeldung über föderierte Identitätsanbieter zu ermöglichen. Um eine föderierte Anmeldung anbieten zu können, müssten wir eine große Menge an benutzerdefinierter Logik neu schreiben.

Um diese möglichen Nachteile zu überwinden, haben wir für jede Domäne einen eigenen Cognito User Pool erstellt und angepasst. Letztendlich speichern wir die Benutzer immer noch in einer einzigen Datenbank, aber wir haben unterschiedliche Benutzerpools pro Domäne.
Die Verwendung von Amazon Cognito für die Benutzerauthentifizierung ist viel einfacher und effizienter als die Erstellung eines eigenen Authentifizierungsdienstes von Grund auf. Und was am wichtigsten ist: Sie müssen sich keine Gedanken über die Sicherheit oder Verschlüsselung der Daten machen.
Mehrere Domains in einem einzigen Benutzerpool zu haben, war in unserem Fall nicht möglich, da wir wollten, dass die Anmeldung nur mit einer E-Mail-Adresse oder über Facebook / Google erfolgt. Aus diesem Grund haben wir uns für mehrere Benutzerpools entschieden.
Und nicht zuletzt haben wir uns für ein API-Gateway pro Umgebung mit mehreren Stufen für jede Domäne entschieden, um die Erstellung mehrerer Ressourcen und die zusätzliche Wartungsarbeit zu reduzieren.

Irena Spiridonova
Vertrauen bei führenden Unternehmen weltweit




Intertec


Aneta Pejchinoska


Intertec