Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Authentifizierung und Autorisierung mit Auth0 in PHP

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

In diesem Artikel werden wir den Auth0-Dienst untersuchen, der Authentifizierung und Autorisierung als Dienst bereitstellt. Mit Auth0 können Sie grundlegende Authentifizierungs- und Autorisierungsfunktionen für Ihre Apps im Handumdrehen einrichten.

Was ist Auth0?

Auth0 ist eine Authentifizierung als Service-Tool, das die Implementierung von authentifizierungsbezogenen Funktionen auf Ihrer Website zu einem Kinderspiel macht. Wenn Sie eine App entwickelt haben und nur die Authentifizierungs- und Autorisierungsfunktionen auslagern möchten, sollten Sie einen Dienst wie Auth0 in Erwägung ziehen.

Lassen Sie mich kurz zusammenfassen, was Auth0 zu bieten hat:

  • Einmalige Anmeldung
  • Multifaktor-Authentifizierung
  • Passwortlose Logins
  • Benutzerverwaltung
  • und vieles mehr

In diesem Artikel werden einige Single Sign-On-Methoden erläutert, die Sie in Ihren Webanwendungen implementieren können, um die vom Auth0-Dienst bereitgestellten Authentifizierungsfunktionen zu nutzen.

In der ersten Hälfte des Artikels erfahren Sie, wie Sie grundlegende Authentifizierungsfunktionen in einer serverseitigen PHP-Webanwendung einrichten. In der zweiten Hälfte erkläre ich, wie Sie Ihre benutzerdefinierten APIs sichern können, indem Sie die OAuth-Autorisierung mit dem Auth0-Dienst einrichten.

Serverseitige Authentifizierung Integration

In diesem Abschnitt erfahren Sie, wie Sie mithilfe von Auth0 schnell die Basisauthentifizierung für serverseitige Webanwendungen einrichten können. Tatsächlich bietet das Auth0-Team bereits ein praktisches GitHub-Beispiel, das grundlegende Beispiele demonstriert, also werden wir das verwenden, anstatt das Rad neu zu erfinden.

Bevor Sie fortfahren, stellen Sie sicher, dass Sie Composer installieren, damit die eigentlichen Auth0 SDKs mit der Datei composer.json installiert werden. Wenn Sie den Beispielen in diesem Artikel folgen möchten, können Sie auch einen kostenlosen Account mit Auth0 erwerben.

Richten Sie das Projekt ein

Lassen Sie uns weitermachen und den Klon des Samples-Projekts greifen.

Fahren Sie mit dem Befehl composer install fort, um die Abhängigkeiten zu installieren.

Laut der Datei composer.json sollten die Pakete vlucas/phpdotenv und auth0/auth0-php installiert sein.

Die Bibliothek vlucas/phpdotenv wird zum Initialisieren von Umgebungsvariablen aus der .env-Datei verwendet. Auf diese Weise können Sie die Konfiguration von dem Code trennen, der zwischen den Umgebungen wechselt.

Auf der anderen Seite ist das auth0/auth0-php Paket dasjenige, das uns helfen wird, die Autorisierung in unserer Anwendung einzurichten.

Als Nächstes richten wir die Konfiguration für unsere Anwendung in der .env-Datei ein. Gehen Sie voran und erstellen Sie die .env-Datei, indem Sie sie aus der .env.example-Datei kopieren.

Es enthält Konfigurationswerte, die von der Auth0-Bibliothek verwendet werden.

Sie sollten die meisten Einstellungen unter Applications > Default App > Settings im Auth0-Dashboard finden können. Bitte beachten Sie, dass ich die Standardanwendung verwende, die vom System erstellt wurde. Natürlich können Sie eine neue Anwendung erstellen, wenn Sie dies möchten.

Die AUTH0_CALLBACK_URL ist die URL Ihrer Anwendung, bei der Auth0 Benutzer nach dem Anmelden und Abmelden umleiten wird. Der Wert, den Sie in diesem Feld festlegen, muss unter den Allowed Callback URLs unter den Anwendungseinstellungen auf dem Auth0-Dashboard konfiguriert werden.

Sie finden drei Hauptdateien, die den Großteil der Authentifizierungslogik implementieren.

  • index.php: Dies ist die Hauptseite, die basierend auf dem Status des Benutzers entweder eine Schaltfläche zum Anmelden oder Abmelden anzeigt.
  • login.php: Dieses Skript wird gestartet, wenn Sie auf den Login-Button klicken und Benutzer zur Anmelde-Schnittstelle Auth0 umleiten. Nach der Anmeldung werden sie zurück zur AUTH0_CALLBACK_URL weitergeleitet.
  • logout.php: Dieses Skript wird gestartet, wenn du auf den Logout-Button klickst und Benutzer zu Auth0 im Hintergrund weiterleitet, sie ausloggst und sie zurück zur AUTH0_CALLBACK_URL bringt.

Wichtige Projektdateien

Lassen Sie uns schnell jede Datei im Starter-Projekt durchgehen.

Das Anmeldeskript

Wir beginnen mit der login.php Datei.

Zu Beginn haben wir Autoloader integriert, die für das Laden von Klassen mit Aut0- und Umgebungsvariablen zuständig sind. Anschließend initialisieren wir Konfigurationsvariablen aus der .env-Datei mit der Funktion getenv.

Als nächstes instanziieren wir das Auth0-Objekt und rufen die Login-Methode auf, die Benutzer zur Anmeldung an Auth0 weiterleitet. Nach der Anmeldung werden die Nutzer auf unsere Website weitergeleitet.

Sie können sich mit Ihren sozialen Accounts wie Facebook, Google und Ähnlichem anmelden oder ein neues Konto bei der Anmeldung erstellen. In beiden Fällen erstellt Auth0 Datensätze für die neuen Benutzer an ihrem Ende. Unter Connections> Social können Sie auf dem Auth0-Dashboard verschiedene soziale Logins aktivieren. Sie können auch die Liste der Benutzer überprüfen, die mit Auth0 im Auth0-Dashboard unter dem Link Users angemeldet sind.

Das Logout-Skript

Als nächstes schauen wir uns die logout.php Datei an.

Dies funktioniert genauso wie die login.php-Datei, außer dass sie beim Abmelden aufgerufen wird. Die Methode logout wird aufgerufen, um eine Benutzersitzung in Ihrer App abzubrechen. Anschließend wird der Benutzer zu Auth0 weitergeleitet, damit der Dienst über die Abmeldeaktivität des Benutzers informiert wird. Abschließend wird der Benutzer zurück zu Ihrer Anwendung geleitet.

Die Indexdatei

Schließlich gehen wir die Datei index.php durch, die der Einstiegspunkt unserer Anwendung ist.

Hier haben wir die getUser-Methode des $auth0-Objekts verwendet, um zu sehen, ob es eine aktive Sitzung gibt. Wenn es keine aktive Sitzung gibt, zeigen wir den Sign In-Link an, der einen Benutzer zur login.php führt und den Login-Flow initiiert. Auf der anderen Seite werden wir den Benutzer begrüßen und den Logout-Link anzeigen, wenn der Benutzer bereits angemeldet ist.

Das war die Implementierung eines grundlegenden Authentifizierungsablaufs für serverseitige Apps.

Sichern Sie Ihre benutzerdefinierten APIs mit OAuth2

In diesem Abschnitt erfahren Sie, wie Sie Ihre benutzerdefinierten APIs sichern können, indem Sie den OAuth2-Berechtigungscode-Genehmigungsablauf implementieren. Ich hoffe, Sie kennen den Standardfluss des Autorisierungscode-Grants, da wir hier nicht näher darauf eingehen werden. Hier findest du einige unserer Beiträge auf Envato Tuts +, wenn du mit OAuth2 auf dem Laufenden sein willst.

Stattdessen tauchen wir gleich in die eigentliche Implementierung ein. Gehen Sie voran und erstellen Sie eine auth_code_grant_example.php Datei mit den folgenden Inhalten.

Schauen wir uns an, wie dieser Code funktioniert!

Beginn des Autorisierungsablaufs

Zuerst bereiteten wir einen Link vor, der den Benutzer an den Auth0-Server sendet, um den Autorisierungsablauf zu beginnen.

Ersetzen Sie {AUDIENCE}, {CLIENT_ID} und {CALLBACK_URL} durch Werte, die Ihrer Anwendung entsprechen. Der Parameter {AUDIENCE} sollte durch den Wert des Felds Identifier unter APIs> {YOUR API APPLICATION}> Settings im Auth0-Dashboard ersetzt werden.

Der {SOME_RANDOM_STRING} sollte durch einen eindeutigen Wert ersetzt werden, der schwer zu erraten ist. Diese Zeichenfolge wird verwendet, um CSRF-Angriffe zu verhindern. Stellen Sie außerdem sicher, dass {AUTH0_DOMAIN} durch Ihren Domänennamen ersetzt wird, wie bereits erwähnt.

Erhalten des Zugriffstokens

Wenn ein Nutzer auf den Sign In-Link klickt, wird er zur Authentifizierung an den Auth0-Server weitergeleitet. Nach der Authentifizierung werden Sie aufgefordert, den Zugriff der Anwendung auf Ihr Profil zu autorisieren. Nach der Autorisierung wird der Benutzer mit dem codeals $_GET-Parameter zurück an Ihre Anwendung weitergeleitet.

Als nächstes können wir diesen code austauschen, um das Zugriffstoken zu erhalten.

Wie Sie sehen, benötigt ein einzelner CURL-Aufruf das Zugriffstoken.

Rufen Sie Ihren benutzerdefinierten API-Endpunkt auf

Sobald Sie über das Zugriffstoken verfügen, können Sie Ihren benutzerdefinierten API-Endpunkt aufrufen, indem Sie ihn in die Kopfzeile aufnehmen.

Ein Auth0-geschützter API-Endpunkt

Die fiktive API-Ressourcendatei demo_api_server.php könnte etwa so aussehen:

Lasst uns schnell die wichtigen Teile dieses Codes durchgehen.

Validieren des Zugriffstokens

Es liegt in Ihrer Verantwortung, das eingehende Zugriffstoken zu überprüfen, bevor Sie der geschützten Ressource Zugriff gewähren. Und genau das haben wir im folgenden Ausschnitt gemacht. Wir haben die JWTVerifier-Dienstprogrammklasse verwendet, um das Zugriffstoken zu validieren.

Der {SIGNING_ALGORITHM}sollte durch den Wert des Signing Algorithm-Felds unter APIs> {YOUR API APPLICATION}> Settings ersetzt werden.

So können Sie Ihre benutzerdefinierten APIs schützen, wenn Sie den OAuth2-Flow im Auth0-Service verwenden möchten.

Fazit

Heute haben wir den Auth0-Dienst durchlaufen, der Authentifizierung und Autorisierung als Dienst bereitstellt. Nach der Einführung des Auth0-Dienstes haben wir anhand einiger praktischer Beispiele gezeigt, wie Sie es in Ihre PHP-Anwendungen integrieren können.

Bitte zögern Sie nicht, Ihre Vorschläge und Fragen mit dem unten stehenden Feed zu posten!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.