So sichern Sie eine REST-API mit Lumen

Lumen ist der kleine Bruder von Laravel: ein schnelles, leichtes Mikro-Framework zum Schreiben von RESTful-APIs. Mit etwas Code können Sie Lumen verwenden, um eine sichere und extrem schnelle RESTful-API zu erstellen.

In diesem Video-Lernprogramm aus dem Kurs "Erstellen einer REST-API" mit Lumen lernen Sie, wie Sie die integrierte Authentifizierungs-Middleware von Lumen verwenden, um eine REST-API mit Lumen zu sichern.

Das Video bezieht sich auf Code aus einer Beispiel-Musikspeicher-API, die wir in früheren Lektionen des Kurses erstellt haben. Sie können den gesamten Quellcode aus dem Kurs auf GitHub anzeigen.

So sichern Sie eine REST-API mit Lumen

 

Authentifizierung in Lumen

Sicherheit ist ein sehr wichtiger Teil, nicht nur für eine Web-API, sondern auch für eine Anwendung. Leider kann die Implementierung der Authentifizierung eine schwierige Sache sein. Zum Glück ist die Authentifizierung jedoch in Lumen integriert, sodass wir lediglich die Authentifizierung aktivieren und dann ein paar Codezeilen zur Authentifizierung eines Benutzers und dann ein paar weitere Codezeilen schreiben müssen, um die Dinge zu schützen, die wir schützen möchten.

In unserem Beispiel möchten wir drei Methoden auf unserem Gitarrencontroller schützen. Sie sind die Methoden zum Erstellen, Aktualisieren und Löschen. Dies sind Dinge, auf die nur ein authentifizierter Benutzer Zugriff haben sollte. 

Beginnen wir also mit dem Bootstrap-Ordner und öffnen Sie app.php. 

Es gibt zwei Aussagen, die wir auskommentieren müssen. Der erste ist der Anruf an routeMiddleware, die Einrichtung der Authentifizierungs-Middleware. Wir möchten auch den Auth-Dienstanbieter registrieren. Die zweite Aussage ist also $ app-> register (App \ Providers \ AuthServiceProvider :: class);. Indem wir diese beiden Anweisungen auskommentieren, können wir jetzt die Authentifizierung in unserer Anwendung verwenden.

Nun möchten wir unsere Authentifizierungs-Middleware zur Kenntnis nehmen. Also lass uns zu gehen App \ Http \ Middleware \ Authenticate.php, und innerhalb dieser Klasse gibt es eine Methode namens Griff, und diese Methode wird vor unseren geschützten Methoden ausgeführt. 

Jedes Mal, wenn wir eine Anfrage für unsere Erstellungs-, Aktualisierungs- oder Löschmethoden stellen, wird die Authentifizierungs-Middleware verwendet Griff Methode wird aufgerufen.

Wenn der Benutzer nicht authentifiziert ist, gibt er eine 401 zurück. Andernfalls leitet er die Anfrage an das nächste Objekt weiter, das diese Anfrage verarbeitet. 

Das war also eine Sache, die wir uns ansehen mussten. Der andere befindet sich im Providers-Ordner, und es ist AuthServiceProvider.php.

Am Ende dieser Datei befindet sich nun eine Methode Stiefel, und in boot ist ein Aufruf dazu viaRequest Methode. Und dies ist die Methode, mit der der Benutzer tatsächlich authentifiziert wird. Dies wird also von unserer Implementierung abhängen. In dieser Lektion wird unsere Implementierung sehr einfach sein.

Was wir tun werden, ist nach einem Header namens Api-Token zu suchen. Wenn es sich um einen bestimmten Wert handelt, werden wir sagen, dass der Benutzer authentifiziert ist. Um zu sagen, dass ein Benutzer authentifiziert ist, müssen wir eine Benutzerinstanz zurückgeben. Wenn wir null zurückgeben, bedeutet dies, dass der Benutzer nicht authentifiziert ist.

Also, lasst uns diesen Code schreiben. Ich werde diesen vorhandenen Code auskommentieren. Als erstes holen wir den Api-Token-Header ab. Wir werden also unsere Anfrage verwenden, wir nennen die Header-Methode und wir wollen Api-Token. 

$ header = $ request-> header ('Api-Token');

Nun möchte ich zunächst sagen, dass dies nicht sicher ist. Wir möchten unsere Benutzer auf jeden Fall in einer Datenbank speichern. Sie sollten jeweils ihre eigenen einzigartigen Token haben, und wir sollten wirklich mit privaten und öffentlichen Schlüsseln arbeiten. Aber ich überlasse Ihnen alle Details zur Implementierung. Wir möchten sehen, wie die Authentifizierungs-Middleware in unsere Anwendung eingefügt wird, damit wir das zum Laufen bringen können, und dann können Sie das implementieren, was Sie implementieren möchten.

Wir werden also den Header namens Api-Token abrufen. Und lassen Sie uns zuerst prüfen, ob wir etwas haben. 

Jetzt müssen wir nur noch sagen, wo wir unsere Authentifizierungs-Middleware einsetzen wollen. Wir können das an verschiedenen Orten machen.

Der erste ist, wann immer wir unsere Routen definieren. Zum Beispiel möchten wir unsere Post-Anfrage schützen. Anstatt unsere Route so zu schreiben, wie wir es getan haben, könnten wir dies tun. Es ist im Wesentlichen dasselbe, aber das zweite Argument, das wir an die post-Methode übergeben haben, wird zwei Schlüssel und Werte haben.

Ohne weiter zu gehen, könnten wir zu Fiddler übergehen und eine Post-Anfrage stellen und sehen, ob das geschützt werden würde.

Nun, eines der großen Dinge an Fiddler ist, dass es alle von uns gestellten Anfragen nachverfolgt. Wir müssen also nur herausfinden, wo wir eine POST-Anfrage gemacht haben. Und wenn wir versuchen, das auszuführen, erhalten wir eine 401. Aber wenn wir diesen Api-Token-Header einschließen, und wenn wir "Vögel fliegen nach Süden" setzen, dann erhalten wir immer eine 200, wenn wir diese Anfrage stellen. und wir wissen bereits, dass sich diese Daten jetzt in der Datenbank befinden.

Das ist also die erste Option. Die zweite Möglichkeit besteht darin, unsere Middleware im Konstruktor unseres Controllers anzugeben. Lassen Sie uns den Code, den wir gerade geschrieben haben, auskommentieren und verwenden Sie stattdessen unsere alte Route. 

Gehen wir zu unserem Gitarren-Controller und fügen Sie den folgenden Code hinzu:

Wenn wir also zu Fiddler zurückkehren und dieselbe Anfrage absenden, ändern wir einfach den Wert in eine Strat und die Marke in Fender. Dann werden wir feststellen, dass es immer noch funktioniert. Wenn wir diese Anforderung ausführen, erhalten wir eine 200. Wenn wir das Api-Token herausnehmen, erhalten wir eine 401. 

Lassen Sie uns nun auch einige andere Anfragen ausstellen. Also machen wir eine GET-Anfrage, damit wir diese Gitarren abrufen und ihre IDs erhalten können. Lassen Sie uns das Api-Token einfach loswerden, damit wir sehen können, dass dies ohne jegliche Authentifizierung funktioniert. Und wir bekommen ID von 1 und ID von 2. 

Wenn wir also zum Komponisten zurückkehren, können wir eine PUT-Anforderung für die Gitarre mit der ID 2 stellen.

Für die Daten, die wir senden werden, ist Fender die Marke, aber ändern wir das Modell von einem Strat zu einem Telecaster. Jetzt ohne Api-Token sollte dies nicht funktionieren. Wann immer wir ausführen, erhalten wir eine 401. Aber fügen wir das Api-Token hinzu und dann den Wert: Vögel fliegen nach Süden, und diese Anforderung wird 200 zurückgeben. 

Lassen Sie uns also der Vollständigkeit halber eine DELETE-Anfrage machen. Lassen Sie uns die Gitarre mit der ID 1 löschen. Wir sollten 200 erhalten und die Anforderung erneut abrufen, um alle unsere Gitarren abzurufen. Und wir sollten nur eine haben, und es sollte eine ID von 2 haben. Die Marke ist Fender und das Modell ist Telecaster. 

Das Hinzufügen einer Authentifizierung zu einer Lumen-Anwendung ist daher sehr, sehr einfach. Neben dem Hinzufügen der Middleware befindet sich der größte Teil des Codes, den Sie schreiben müssen, in der AuthServiceProvider Klasse. Sie müssen den Code schreiben, der für die Authentifizierung des Benutzers verantwortlich ist. Sobald dies geschehen ist, verfügen Sie über eine sichere API.

Sehen Sie sich den vollständigen Kurs an

Im gesamten Kurs Erstellen einer REST-API mit Lumen zeige ich Ihnen, wie Sie mit der Erstellung von REST-APIs mit dem Lumen-Framework beginnen. Sie beginnen mit dem Einrichten einer Lumen-Entwicklungsumgebung und erstellen dann eine vollständige API für einen Musikladen, einschließlich Routing, MySQL-Datenbankkonnektivität und Sicherheit.