AWS Cognito-Accounts aufsetzten

AWS Cognito-Accounts aufsetzten

Erstellung des Auth Service mit Cognito in der neuen Benutzeroberfläche von Amazon

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 

  1. Wähle in der Kennwortrichtlinie die Option "Benutzerdefiniert" und deaktiviere die  Anforderung "Enthält mindestens 1 Sonderzeichen".
    Lass die anderen Felder unangetastet

  2. Setze in der Multi-Faktor-Authentifizierung die MFA-Erzwingung auf "Keine MFA".

  3. Deaktiviere Wiederherstellung von Benutzerkonten und deaktiviere die Option "Self-Service-Kontowiederherstellung aktivieren" 2

  4. Drücke auf “weiter


3. Konfiguration des Anmeldevorgangs


  1. Deaktiviere in dem Tab “Attributverifizierung und Bestätigung des Benutzerkontos” die OptionErlauben Sie, dass Cognito automatisch Nachrichten zur Überprüfung und Bestätigung sendet”

  2. “Zusätzliche erforderliche Attribute”- keine 3

  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:

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. 

Dieser Name kann nachträglich nicht mehr geändert werden!
2. Verwende eine Cognito Domain und gebe dieser einen Namen 4
3. Speicher dir den vollständigen URL Link ab. Du brauchst ihn später noch.
(Beispiel: https://mycognitodomain.auth.eu-west-1.amazoncognito.com)
4. Wähle “Andere” beim Initial App Client aus
5. Wähle “App Client Name” für deine eigene Administration aus
6. Wähle “Erstelle kein Client Schlüssel” 5
7. Rückruf URL is: https://auth.paylogic.com/federated-callback
8. Klicke auf “Erweiterte Einstellungen”
9. Füge unter “Authentifizierungs Flow” - “Erlaube Admin User Passwort Auth”, “usr_srp_auth” & “allow_custom_auth
10  Alle openID connect Bereiche hinzufügen
11. Hinterlege folgende “Ausloggen” URL: https://auth.paylogic.com/federated-logout
12. Klicke auf “Weiter

4) Die Cognito-Domain verwaltet und normalisiert Benutzerdaten, die sich über externe Login-Anbieter wie Facebook und Google angemeldet haben. Diese Domain ist für den Nutzer nie sichtbar, wird aber in Weiterleitungen verwendet, um die Anmeldung von Nutzern über Facebook und Google zu verarbeiten. Die Verwendung einer eigenen Domain ist daher nicht notwendig.

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.

  1. In Cognito, gehe zu App-Integration > App-Client-Einstellungen 

  2. Klicke Gehostete Benutzeroberfläche starten (unten links)

  3. 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.

  4. Gehe zurück zu Cognito und gehe zu App-Integration > App-Client-Einstellungen

  5. Klicke auf den Gehostete Benutzeroberfläche starten (Links unten) 

  6. 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



    • Related Articles

    • Cognito-Accounts FAQ

      Hier findest du Antworten zu den meistgestellten Fragen zu Cognito-Accounts. Diese Information kannst du gerne, sofern relevant, in deine Website-FAQ mit aufnehmen, um deinen Kund*innen die Antworten im Vorfeld bereitzustellen. Wie können Kund*innen ...
    • Benutzerdefinierte Domain erstellen für Cognito-Accounts

      In diesem Artikel findest du die Schritte zur benutzerdefinierten Domain für Cognito-Accounts. Bitte beachte, wenn du Cognito-Accounts in einem per Iframe eingebauten Shop benutzen möchtest, musst du eine identische benutzerdefinierte Domain für den ...
    • Geschenkgutscheine aktivieren und aufsetzten

      Wertguscheine können genutzt werden im Falle einer Verschiebung oder einer Absage, sie können aber auch als eine Alternative zu Erstattungen genutzt werden oder im Shop als z.B. Geschenk verkauft werden. Als erstes muss du die Gutscheingruppe ...