https://d226lax1qjow5r.cloudfront.net/blog/blogposts/aws-cognito-verify-with-php/Social_Amazon-Cognito_Verify_1200x627.png

AWS Cognito Verify mit PHP

Zuletzt aktualisiert am October 26, 2020

Lesedauer: 6 Minuten

Die richtige Benutzerverwaltung ist harte Arbeit. Es kann schwierig sein, den Benutzern zu erlauben, sich selbst zu registrieren und ihre Identität zu verifizieren. Die Verwendung von Amazon Cognito und der Vonage Verify API machen es jedoch ein wenig einfacher, indem sie die schwere Arbeit übernehmen.

Mit ein paar Webformularen, Vonage SDKund AWS SDKkönnen Sie ein Standard-Benutzerverwaltungssystem erstellen, das es einem Benutzer ermöglicht, sich zu registrieren, seine Anmeldedaten zu aktualisieren, seine Identität zu überprüfen und sich anzumelden. Sie verwenden den Code aus dem verify-aws-cognito-php Code-Repositorium.

HINWEIS: Zu Lehrzwecken wurde der Beispielcode im obigen Repo einfach gehalten. Ich habe weder ein Framework noch CSS oder Javascript verwendet. Ich empfehle jedoch die Verwendung eines unterstützten Frameworks und eine korrekte CSS-Gestaltung für eine bessere Anwendung unter Beachtung der korrekten Trennung von Belangen.

Voraussetzungen

  • PHP 7.4 (Aktualisierung serverless.yml für andere Versionen)

  • Composer installiert global

  • AWS-Konto

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

Anweisungen zur Einrichtung

Klonen Sie die verify-aws-cognito-php von GitHub, und navigieren Sie in das neu erstellte Verzeichnis, um fortzufahren.

Abhängigkeiten installieren

Dieses Beispiel erfordert die Verwendung von Composer, um Abhängigkeiten zu installieren und den Autoloader einzurichten.

Angenommen, Sie haben Composer global installiert habenausführen:

composer install

AWS-Einrichtung

Dieses Beispiel verwendet Amazon Cognito User Pools, um Benutzer zu speichern. Ich habe einen Benutzerpool wie folgt eingerichtet:

  • Navigieren Sie zum Amazon Cognito Dashboard in der AWS-Konsole.

  • Wählen Sie Manage User Pools.

  • Erstellen Sie einen neuen Benutzerpool.

    • Geben Sie dem Pool einen Namen, und klicken Sie auf Step through settings

    • Wählen Sie Email address or phone number und wählen Sie Allow email addresses

    • Klicken Sie auf Next step

    • Legen Sie die minimale Passwortlänge und die gewünschte Komplexität fest.

    • Stellen Sie sicher, dass Allow users to sign themselves up

    • Klicken Sie auf Next step

    • Lassen Sie den nächsten Schritt für dieses Beispiel unverändert. Wir werden Vonage für 2FA verwenden

    • Klicken Sie auf Next step

    • Wählen Sie eine FROM email address ARN aus der Dropdown-Liste. Dies setzt voraus, dass Sie bereits eine Identität in Amazon Simple Email Service(SES)

    • Hinzufügen einer FROM email address wie gewünscht.

    • Lassen Sie den Rest dieser Seite unverändert. Ich empfehle Ihnen jedoch, die nachgestellten Punkte aus den E-Mail-Nachrichten zu entfernen. Dadurch wird verhindert, dass der Empfänger den Punkt fälschlicherweise als Teil des vorläufigen Passworts verwendet.

    • Klicken Sie auf Next step

    • Überspringen Sie das Hinzufügen von Tags, indem Sie auf Next step

    • Geräte überspringen durch Klicken auf Next step

    • Klicken Sie auf den Link zu Add an app client

    • Geben Sie dem App-Client einen Namen

    • Deaktivieren Sie das Kontrollkästchen, um Generate client secret

    • Kreuzen Sie die restlichen Kästchen an

    • Klicken Sie auf Create app client

    • Klicken Sie auf Next step

    • Auslöser überspringen durch Klicken auf Next step

    • Klicken Sie auf Create pool

Update Umwelt

Benennen Sie die mitgelieferte .env.default Datei in .env und aktualisieren Sie die Werte nach Bedarf:

AWS_PROFILE=default AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_VERSION=latest AWS_REGION=us-east-1 AWS_CLIENT_ID= AWS_USERPOOL_ID= NEXMO_API_KEY= NEXMO_API_SECRET=

Alle Platzhalter, die mit <> im obigen Beispiel gekennzeichneten Platzhalter müssen aktualisiert werden. Aktualisieren Sie die anderen nach Bedarf.

Starten oder Einsetzen

Testen Sie die Anwendung, indem Sie sie lokal mit dem in PHP integrierten Webserver mit dem folgenden Befehl ausführen:

php -S localhost:8080

Rufen Sie die wichtigste Landing Page auf, indem Sie die Seite http://localhost:8080 in einem Webbrowser aufrufen.

WICHTIG: Obwohl diese App funktioniert, ist sie für Bildungszwecke gedacht und kann in der vorliegenden Form nicht öffentlich genutzt werden.

Funktionsweise

Der Ablauf der Anwendung ist wie folgt:

  • Klicken Sie auf der Hauptseite entweder auf Login oder Register.

    • Nach der Registrierung (user_register.php) wird der Nutzer auf eine Seite weitergeleitet, auf der er sein Passwort ändern muss. (login_reset.php) Hier sollte er das vorläufige Passwort verwenden, das er per E-Mail erhalten hat.

    • Nach der Aktualisierung des vorläufigen Passworts wird der Benutzer zur Anmeldeseite weitergeleitet. (login.php)

    • Die Anmeldung ist der Ort, an dem sich ein neuer Benutzer oder ein bestehender Benutzer anmelden kann.

    • Nach erfolgreicher Anmeldung wird der Benutzer auf die 2FA-Verifizierungsseite weitergeleitet. (login_verify.php) Hier gibt er den 6-stelligen Code ein, der an seine Handynummer geschickt wurde.

    • Nach erfolgreicher 2FA-Verifizierung wird der Benutzer wieder auf die Hauptseite weitergeleitet (index.php) weitergeleitet, wo er sieht, dass er nun angemeldet ist und die Möglichkeit hat, sich abzumelden. (logout.php)

Nächste Schritte

Wenn Sie Fragen haben oder Probleme auftreten, können Sie sich an @VonageDev auf Twitter oder in der Nexmo-Gemeinschaft Slack-Team. Viel Glück!

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpVonage Ehemalige

Adam ist ein Entwickler und Berater, der gerne Ultraläufe absolviert, bloggt und anderen dabei hilft, Technologien zu zähmen, um erstaunliche Dinge zu erreichen, und der ein unstillbares Verlangen hat, Mentoren zu sein und zu helfen.