2016-01-18 10 views
5

Ich habe versucht, verschiedene AWS-Services für die Infrastruktur für unser nächstes Großprojekt zu verwenden. Wir haben begonnen, Docker-Container auf EC2-Instanzen zu betrachten, aber nachdem wir uns AWS Lambda etwas genauer angesehen haben, scheint es ein würdiger Weg zu sein, ihn zu erkunden.Benutzerauthentifizierung (Anmeldung und Anmeldung) bei AWS mit Lambda, Cognito oder IAM

Mit dem AWS Lambda-Paradigma würden wir einfach Lambda-Funktionen als logischen Klebstoff verwenden, um unsere Daten und Ereignisse (aus anderen AWS-Services) zusammen zu halten.

Wenn beispielsweise ein Benutzer unseres Produkts einen neuen Datensatz erstellt, kann AWS Lambda für dieses Ereignis ausgelöst werden, und wir können eine Lambda-Funktion aufrufen, um diesen Datensatz zu AWS Cloudsearch hinzuzufügen und unsere Suche auf dem neuesten Stand zu halten.

Ich bin ein wenig unsicher, wenn es um Benutzerverwaltung, Authentifizierung und so weiter innerhalb dieser Art von Paradigma geht. Ich habe einige Dokumente zu IAM und Cognito gelesen, in denen ich nach einem AWS-Dienst gesucht habe, um Benutzeranmeldung, Login, Abmeldung, Passwort vergessen usw. zu entlasten. Es scheint nicht so zu sein, für was diese Dienste eigentlich sind. IAM ist Identitätsmanagement für die Organisation (nicht die Benutzerbasis), und Cognito konzentriert sich mehr auf die Synchronisierung von Identitätsinformationen über viele Geräte oder App-Instanzen (Post-Authentifizierung).

Ich frage mich derzeit, ob das, was ich tun sollte, schreiben Anmeldung, Login, Passwort vergessen usw. Code als Lambda funktioniert selbst? Oder gibt es eine Lösung oder eine Reihe von Lösungen innerhalb des AWS-Stacks, die diesen speziellen Juckreiz zerkratzen würden?

Antwort

7

Sie können your own authentication system mit Cognito verwenden und dann AMI für die Autorisierung verwenden, auch für Ihre Benutzerbasis.

  • Wenn ein Benutzer (möglicherweise in einer Lambda-Funktion über API-Gateway genannt) Authentifizierung, werden Sie retrieve or create in Cognito an identity ID associated to the userGetOpenIdTokenForDeveloperIdentity verwenden.
  • Dann haben Sie ein Cognito OpenId-Token, das Sie Ihrem authentifizierten Benutzer geben können.
  • Der Benutzer kann dieses Token verwenden, um temporary AWS credentials mit einer IAM-Rolle zu verknüpfen. So können Sie authentifizierten Benutzern Zugriff auf einige Ihrer AWS-Ressourcen gewähren: GetCredentialsForIdentity.
  • Wenn der Benutzer AWS-Ressourcen nennt diese Anmeldeinformationen erhalten Sie Zugriff auf seine Cognito Identität über den Kontext haben (Beispiele mit Lambda, API Gateway oder S3)
  • Schließlich können Sie find the user associated to this Cognito identity in Ihrem System mit LookupDeveloperIdentity.

Überprüfen Sie die authentication flow und some more examples

Verwandte Themen