Dieses Dokument erklärt dir, wie du die folgenden Schritte erstellst und verifizierst
Einen neuen Cognito Benutzer-Pool
Login-Anbieter Facebook und Google
Einrichten der Paylogic Backoffice Administration von Cognito Einstellungen
Bevor du beginnst, stelle sicher, dass du Zugang hast zu
Einem AWS Konto in einer beliebigen Region
Einem AWS Nutzer mit Erlaubnis Cognito und Lambda Funktionen zu erstellen
Einem Facebook Entwickler Account
Einem Google (Firmen) Account
1. Erstellen eines neuen Benutzer Pools in Cognito
Gehe zur AWS-Managementkonsole
Gehe zu Alle Services > Cognito
Klicke Verwalten von Benutzer-Pools
Klicke Erstellen eines Benutzer-Pools
Folge nun diesen Schritten:
1. Anmeldeoptionen für Cognito-Benutzerpool:
- Sei bei diesem Schritt sehr genau, da die meisten Einstellungen auf dieser Seite nicht mehr bearbeitet werden können, nachdem der Pool erstellt wurde
- Wenn du Google und Facebook SSO aktivieren möchtest, dann aktiviere “Verbundene Identitätsanbieter”. Wenn du die notwendigen Infos noch nicht parat hast, kannst du diese Option jetzt aktivieren und später alles nachtragen.
Anmeldeoptionen:
- Wähle E-Mail-Adresse
- Wähle bei “Anforderungen für Benutzernamen” nichts aus 1
2. Drücke auf “Weiter”
1) Wir können keine Benutzerattribute auf Cognito-Ebene verlangen, da dies ein Problem mit externen Login-Providern verursacht. Wenn sich jemand in Cognito mit einem externen Login-Anbieter anmeldet, überschreibt Cognito immer alle Benutzerdaten. Wir wollen nicht, dass dies nach der ersten Anmeldung geschieht, weil der Benutzer sein Profil aktualisiert haben könnte, das dann bei der nächsten Anmeldung durch die Daten des externen Anmeldeanbieters überschrieben würde. Um dies zu verhindern, ordnen wir Benutzerdaten von externen Login-Anbietern den Cognito-Benutzerattributen mit dem Präfix custom:provider_ zu. Nur beim ersten Login setzen wir die regulären Cognito-Benutzerfelder manuell mit den Benutzerdaten aus den custom:provider_-Feldern. Damit dies funktioniert, muss Cognito jedoch das Anlegen eines Benutzers ohne Pflichtfelder erlauben.
2. Einstellung der Passwortrichtlinien
Wähle in der Kennwortrichtlinie die Option "Benutzerdefiniert" und deaktiviere die Anforderung "Enthält mindestens 1 Sonderzeichen".
Lass die anderen Felder unangetastet
Setze in der Multi-Faktor-Authentifizierung die MFA-Erzwingung auf "Keine MFA".
Deaktiviere Wiederherstellung von Benutzerkonten und deaktiviere die Option "Self-Service-Kontowiederherstellung aktivieren" 2
Drücke auf “weiter”
3. Konfiguration des Anmeldevorgangs
Deaktiviere in dem Tab “Attributverifizierung und Bestätigung des Benutzerkontos” die Option “Erlauben Sie, dass Cognito automatisch Nachrichten zur Überprüfung und Bestätigung sendet”
“Zusätzliche erforderliche Attribute”- keine 3
Im Tab “Benutzerdefinierte Attribute" musst du folgende Attribute hinzufügen:
a) provider_given_name (string, min 1, max 256, veränderbar)
b) provider_family_name (string, min. 1, max. 256, veränderbar)
c) provider_email (string, min. 1, max. 256, veränderbar)
d) marketing_optin (string, min. 1, max. 6, veränderbar)
Klicke jetzt auf den “Weiter” Button
2) Wir bieten eine automatische Funktion zum Zurücksetzen von Passwörtern im Auth-Dienst. Wir verwenden Cognito nicht, weil es keine Passwort-Reset-Funktionalität für Benutzer mit einer nicht verifizierten E-Mail-Adresse bietet.
3) Wir möchten es Benutzern ermöglichen, in einem Shop zur Kasse zu gehen, ohne vorher ihre E-Mail zu bestätigen. Für einige Endpunkte benötigen wir eine verifizierte E-Mail-Adresse. Wenn Benutzer sich anmelden, erhalten sie eine E-Mail mit einem Link zur Verifizierung ihrer E-Mail-Adresse.
4. Konfiguriere Nachrichtenübermittlung
1. Wähle im E-Mail Tab “E-Mail mit Amazon SES senden” aus
a) Falls du noch keine verifizierte Mail Adresse hast, kannst du auch “Senden von E-Mails mit Cognito” auswählen. Die Einstellungen kannst du auch später noch nachträglich anpassen. Du kannst mit dem Cognito Modus bis zu 50 Mails am Tag testen
2) Klicke nun auf “Weiter”
5. Hinzufügen von Identitätsanbietern
- Führe die folgenden Schritte für jeden Identitätsanbieter aus und erstelle zunächst die Apps (5.1.1 & 5.2.1). Du kannst wählen, ob du alle Social Login-Anbieter aktivieren möchtest oder gar keinen.
- Du kannst diesen Teil auch überspringen und später darauf zurückkommen & direkt zu Schritt 6
5.1 Einrichtung der Google App (optional)
1. Klicke auf: https://console.developers.google.com/apis/credentials
2. Erstelle ein Projekt
3. Klicke auf “Erstelle Login Daten > OAuth client ID
4. Klicke auf “Konfiguriere Konsens Screen” und wähle als User Art “Extern” aus
5. Wähle den Anwendungstyp “Webanwendung”
6. Hinterlege einen Namen
7. Lass “Autorisierter JavaScript Ursprung” frei
8. In dem autorisierten Weiterleitungs-URLs Feld klicke auf URl Hinzufügen
a) Gib die Cognito-Domäne ein und füge “/oauth2/idpresponse” zum Wert hinzu
b) Zum Beispiel: https://mycognitodomain.auth.eu-west-1.amazoncognito.com/oauth2/idpresponse
9. Drücke den Enter Button um es zu bestätigen und klicke auf “speichern”
10.Schreib dir die Kunden ID und den Schlüssel aus dem Dialog auf, du brauchst diese Info später.
5.1.1 Einrichtung der Google App (optional)
1. Navigiere zu Dienste > Cognito > Benutzerpools verwalten und klicke auf den Benutzerpool, den du zuvor erstellt hast
2. Gehe zu Verbund > Identitätsanbieter
3. Klicke auf Google
4. Gib die API-Anmeldeinformationen für Google ein:
Google App ID: die Google Kunden ID aus dem vorherigen Schritt
App-Schlüssel: der Google Kunden Schlüssel aus dem vorherigen Schritt
Geltungsbereich autorisieren: profile email openid (selbe wie der Platzhalter)
5. Klicke auf die Schaltfläche “Google aktivieren”
6. Klicke auf die Google-Karte
7. Klicke auf Attribut-Zuweisung konfigurieren (unten rechts)
8. Wähle die Registerkarte Google
9. Ordne die folgenden Werte zu:
sub zu Benutzername (Standard)
given_name zu custom:provider_given_name
family_name zu custom:anbieter_familienname
email zu custom:anbieter_email
10. Klicke auf “Änderungen speichern”
5.2: Einrichtung der Facebook App (optional)
Du kannst auswählen, ob du die Login-Anbieter Facebook und Google nutzen möchtest. Wenn du diese nutzen möchtest, folge bitte den Schritten 4 bis 7. Du kannst diese Schritte überspringen, wenn du die Social Media Login Möglichkeit nicht nutzen möchtest.
1. Gehe auf https://developers.facebook.com/apps/.
2. Melden dich an oder erstelle ein Entwicklerkonto
3. Klicke auf App erstellen
4. [Schritt nur für Geschäftskonten] Wähle “Integrationen für Ihr Unternehmen verwalten” und klicke auf Weiter
5. Wähle “Keine” als App-Typ und klicke dann auf Weiter
6. Wähle einen Anzeigenamen und eine Kontakt-E-Mail. Der Anzeigename der App ist für deine eigene Referenz. Wenn du ein Business Manager-Konto hast, können wir dies in diesem Schritt ebenfalls verbinden. Sende das Formular ab, indem du auf “App erstellen” klickst
7. Klicke in der Facebook-Anmeldekarte auf die Schaltfläche “Einrichten”
8.Vermeide den Schnellstart. Klicke im linken Menü auf Produkte > Facebook Login > Einstellungen
9. Belasse alle Standardeinstellungen, aber füge “Valid OAuth Redirect URI” hinzu:
Gebe die Cognito-Domain ein und hänge /oauth2/idpresponse an den Wert an
Beispiel: https://mycognitodomain.auth.eu-west-1.amazoncognito.com/oauth2/idpresponse
10. Klicke auf die Schaltfläche “Änderungen speichern”
11. Klicke auf Einstellungen > Allgemeines im linken Navigationsbereich (nicht im Menü Produkte)
12.Gebe deine Cognito Domäne in App-Domains an
13. Fülle auch die Felder 'Datenschutzrichtlinien URL', Webseite URL' aus und klicke auf 'Änderungen speichern'.
14. Veröffentlichte die App in dem du auf den Button oben klickst
15. Speichere die App-ID und das App-Geheimcode im Menü "Einstellungen > Allgemeines", da du diese in späteren Schritten benötigst
5.2.1 Set up Facebook as a Cognito login provider (optional)
1. Gebe die API Anmeldeinformationen von Facebook ein:
a) Facebook-App-ID: die Facebook-App-ID aus einem früheren Schritt
b) App-Schlüssel: das Facebook-Client-Token aus einem früheren Schritt
c) Autorisierungsbereich: public_profile,email (wie der Platzhalter)
2. Klicke auf die Schaltfläche “Aktiviere Facebook”
3. Klicken auf “Konfiguriere Attribute Mapping” (unten rechts)
4. Ordne die folgenden Werte zu:
a) id to Username (default)
b) first_name to custom:provider_given_name
c) last_name to custom:provider_family_name
d) email to custom:provider_email
5. Klicke auf “weiter”
6. Integrierung der App
1. Suche dir einen individuellen Namen für deinen User Pool aus.
5) Wir werden diese Cognito-App in einer clientseitigen Anwendung verwenden, in der wir kein Schlüssel verwenden.
7. Überprüfung & Erstellung des Benutzerpools
1. Überprüfe und erstelle den Benutzerpool
8. Aktiviere alle Identitätsanbieter für deine Apps (optional)
Wir werden die von AWS bereitgestellte Benutzeroberfläche nicht verwenden, da sie recht begrenzt ist. Du kannst diese jedoch verwenden, um zu prüfen, ob die Identitätsanbieter (Google und Facebook) wie erwartet funktionieren.
In Cognito, gehe zu App-Integration > App-Client-Einstellungen
Klicke Gehostete Benutzeroberfläche starten (unten links)
Wähle Weiter mit Google und log dich in irgendein Google Konto ein. Solltest du auf https://auth.paylogic.com/federated-callback landen, bedeutet dies, dass der verbundene Log-in Teil korrekt erstellt wurde. Es sollte eine Fehlermeldung geben, diese kommt daher, dass wir weitere Sachen aufsetzen müssen.
Gehe zurück zu Cognito und gehe zu App-Integration > App-Client-Einstellungen
Klicke auf den Gehostete Benutzeroberfläche starten (Links unten)
Mach das selbe für Facebook
9. Einrichten einer Lambda-Funktion zur automatischen Aktivierung von Benutzern
1.Gehe zu deinem AWS-Verwaltungsbereich
2.Navigiere zu Amazon Cognito > Benutzerpool > Benutzerpool Name> User Pool Properties > Lambada hinzufügen
3. Klick auf die Schaltfläche Funktion erstellen (unten rechts)
4. Wähle den Author from scratch card (oben links)
5. Gib einen Funktionsnamen ein, vorgeschlagener Wert: cognito_auto_confirm_user
6. Wähle Laufzeit: Python 3.10
7. Wähle Architektur x86_64
8. Klicke auf die Schaltfläche Funktion erstellen
9.Füge den folgenden Code in den Code-Editor ein (Abschnitt Funktionscode) und überschreib den vorausgefüllten Datensatz:
def lambda_handler(event, context):
"""
Automatically confirm the user, but don't verify email yet.
Triggered by Cognito Pre Sign-up Trigger.
This allows users to log in without confirming their account.
Other functionality may want to restrict access based on the email_verified attribute.
Results in
- Account status "CONFIRMED"
- Email verified false
https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-sign-up.html
"""
event['response']['autoConfirmUser'] = True
event['response']['autoVerifyEmail'] = False
return event
10. Klicke auf den “Speichern” Button
11. Klicke auf den “Anwenden” Button
9.1 Lambda-Funktion dem Benutzer-Pool zuweisen
1.Navigiere zurück zu Amazon Cognito > Benutzerpools > Benutzerpoolname > Benutzerpool-Eigenschaften > Lambda-Trigger hinzufügen
2.Wähle im Triggertyp "sign-up sign-up" aus
3.Wähle in der Anmeldung "Pre sign-up trigger" aus
4.Wähle unter assign lambda function die soeben erstellte Lambda-Funktion (cognito_auto_confirm_user)
5. Klicke auf die Schaltfläche "Lambda-Trigger hinzufügen" (unten auf der Seite)
10. Erstelle einen AWS Zugangsschlüssel
- In Cognito, klicke auf deinen Profilnamen in der oberen rechten Ecke und wähle Meine Sicherheitsanmeldeinformationen.
- Wähle Zugangsschlüssel und klicke auf Zugriffsschlüssel erstellen.
- Schreibe die AWS Zugangsschlüssel-ID und den AWS Zugangsschlüssel auf, du benötigst diese in einem späteren Schritt
11. Cognito-Einstellungen in Paylogic erstellen
Der folgende Schritt sollte von einem Paylogic Admin gemacht werden. Halte bitte folgende Informationen bereit:
Region - Diese Daten bekommst du aus dem AWS, nutze die Region, in der der Pool konfiguriert wurde. Beispiel: eu-west-1
Pool ID - Diese Daten bekommst du aus dem Cognito Pool > Allgemeine Einstellungen im AWS. Beispiel: eu-west-1_bsJrc1d8F
App-Client-ID - Diese Daten bekommst du aus dem Cognito Pool > App-Integration > App-Client-Einstellung im AWS. Beispiel: 1724iv4qaa49e8bfsd7rfq57ad
Domäne - Diese Daten bekommst du aus dem Cognito Pool > App-Integration > Domänenname im AWS. Beispiel: https://mycognitodomain.auth.eu-west-1.amazoncognito.com
AWS-Zugangsschlüssel-ID für den Nutzer mit Admin Zugang zu diesem Benutzer Pool. Beispiel: AABBCC01234567890
AWS Zugangsschlüssel für den Nutzer mit Admin Zugang zu diesem Benutzer Pool. Bespiel: AaBbCc012345+AaBbCc012/AaBbCc01234567
Gebe an, ob du von sozialen Login-Anbietern (Facebook und Google) Gebrauch machen möchtest oder nicht. Du kannst entscheiden, ob du beide sozialen Login-Anbieter oder keine nutzen möchtest.
Stelle sicher, dass du die Informationen über einen sicheren Kanal kommunizierst.
12.Authentifizierung Ihrer Anwendung mit dem Auth-Server von Paylogic
Paylogic hat seinen Authentifizierungsserver so implementiert, dass du einen eingeloggten Benutzer auch in deiner eigenen App wiederfinden kannst. Die Dokumentation dazu findest du unter https://shopping-api-docs.paylogic.com/auth-service/auth-service.html