API-Token-Authentifizierung

Susan Sarandon
Freigeben: 2024-11-09 20:44:02
Original
248 Leute haben es durchsucht

Einführung

In diesem Artikel werde ich die API-Token-Authentifizierung anhand von Diagrammen leicht verständlich erklären.
Nachdem ich grob verstanden habe, wie die API-Token-Authentifizierung funktioniert, werde ich erklären, wie die API-Token-Authentifizierung mit Laravel Sanctum auf codebasierte Weise funktioniert.

Durch die Lektüre dieses Artikels erfahren Sie Folgendes

  • So funktioniert die API-Token-Authentifizierung
  • So installieren Sie Laravel Sanctum
  • API-Token bei Benutzerregistrierung und Anmeldung generieren
  • API-Token-Authentifizierung, um den Zugriff einzuschränken und den Ressourcenbesitz zu überprüfen
  • Löschen des API-Tokens beim Abmelden

So funktioniert die API-Token-Authentifizierung

API Token Authentication

1. Benutzerregistrierungs-/Anmeldeanfrage

Der Client sendet die Anmeldeinformationen des Benutzers (z. B. E-Mail, Passwort) an den Auth-Server.

2. Benutzerauthentifizierung

Der Authentifizierungsserver überprüft die Anmeldeinformationen, um zu prüfen, ob der Benutzer existiert und ob das Passwort korrekt ist.

3.  API-Token-Generierung

Nach erfolgreicher Anmeldung generiert der Auth-Server ein API-Token für den Benutzer. Das generierte API-Token wird in der Tabelle personal_access_tokens gespeichert.

4. API-Anfrage

Der Client sendet eine API-Anfrage an den Ressourcenserver und hängt das generierte API-Token an den Autorisierungsheader an.

5.  API-Token-Verifizierung

Ressourcenserver überprüft API-Token. Wenn das API-Token gültig ist, wird die Anfrage verarbeitet.

6. API-Antwort

Ressourcenserver gibt API-Antwort zurück.

So installieren Sie Laravel Sanctum

sail php artisan install:api
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Befehl generiert die Datei api.php und die Migrationsdateien, die für die API-Token-Authentifizierung im Rahmen des Laravel-Projekts erforderlich sind.

Führen Sie dann die Migration aus:

sail artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch wird die Tabelle personal_access_tokens erstellt.

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Generieren eines API-Tokens bei der Benutzerregistrierung und -anmeldung

API Token Authentication

Beispielcode

api.php

Route::post('/register', [AuthController::class, 'register']);
Nach dem Login kopieren
Nach dem Login kopieren

AuthController.php

public function register(Request $request)
{
    $fields = $request->validate([
        'name' => 'required|max:255',
        'email' => 'required|email|unique:users',
        'password' => 'required|confirmed'
    ]);

    $user = User::create($fields);

    $token = $user->createToken($request->name);

    return [
        'user' => $user,
        'token' => $token->plainTextToken
    ];
}
Nach dem Login kopieren

Benutzerregistrierung

  1. Benutzerregistrierung.
  2. Der neue Benutzer wird in der Benutzertabelle gespeichert.
  3. Ein API-Token wird generiert. (createToken)
  4. Das generierte API-Token und die Benutzerinformationen werden in der Tabelle personal_access_tokens gespeichert und das API-Token wird dem Benutzer bereitgestellt.

Beispielcode

api.php

*Route*::post('/login', [*AuthController*::class, 'login']);
Nach dem Login kopieren

AuthController.php

sail php artisan install:api
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Benutzeranmeldung

  1. Benutzeranmeldung.
  2. Überprüft, ob der Benutzer in der Benutzertabelle vorhanden ist.
  3. API-Token wird nach erfolgreicher Anmeldung generiert. (createToken)
  4. Das generierte API-Token und die Benutzerinformationen werden in der Tabelle personal_access_tokens gespeichert und das API-Token wird dem Benutzer bereitgestellt.

*Hinweis: Jedes Mal, wenn sich ein Benutzer anmeldet, wird ein neues API-Token generiert.

API-Token-Generierung

Senden Sie mit Postman eine API-Anfrage mit den folgenden Bedingungen, um die Antwort zu überprüfen.

API Token Authentication

Bei erfolgreicher Anmeldung wird ein API-Token generiert.

API Token Authentication

Sie können die Tabelle personal_access_tokens überprüfen, um zu bestätigen, dass der Name und das API-Token des angemeldeten Benutzers gespeichert sind.
*Hinweis: Das Token in der API-Antwort unterscheidet sich vom Token in der Tabelle personal_access_tokens, da es beim Speichern in der Datenbank gehasht wird.

API-Token-Authentifizierung

API Token Authentication

  1. Der Benutzer sendet eine API-Anfrage und fügt das API-Token in den Autorisierungsheader ein.
  2. Die Middleware auth:sanctum gleicht das von der API-Anfrage empfangene API-Token mit dem in der Tabelle „personal_access_tokens“ gespeicherten API-Token ab.
  3. Wenn das API-Token erfolgreich authentifiziert wurde, verarbeitet der Ressourcenserver die API-Anfrage.
  4. Der authentifizierte Benutzer kann Beiträge aktualisieren oder löschen.
  5. Ressourcenserver gibt API-Antwort zurück.

Beschränken Sie den Zugriff auf Post-Funktionen

Das Folgende ist der Beispielcode des CRUD-Prozesses für Beiträge, die einem Benutzer zugeordnet sind.

Beispielcode: PostController.php

Beschränken Sie mit Laravel Sanctum den Zugriff, sodass nur angemeldete Benutzer Beiträge erstellen, bearbeiten und löschen können, die einem Benutzer zugeordnet sind.
Senden Sie eine tatsächliche API-Anfrage, um zu überprüfen, ob die API-Token-Authentifizierung korrekt durchgeführt wird.

Zugangskontrollstandards

Benutzer-APIs

  • indexieren, anzeigen Diese Aktionen stellen allgemein öffentliche Informationen bereit und erfordern keine API-Token-Authentifizierung für eine bessere Benutzererfahrung und SEO.
  • Speichern, Aktualisieren, Löschen Um unbefugten Zugriff zu verhindern und die Datenintegrität aufrechtzuerhalten, ist eine API-Token-Authentifizierung erforderlich.

Admin-APIs

  • Indizieren, Anzeigen, Speichern, Aktualisieren, Löschen Zur Erhöhung der Sicherheit sollten APIs, die nicht öffentlich sein müssen, durch die Anforderung einer Benutzerauthentifizierung für alle Controller-Aktionen gesichert werden.

Codierung

Es ist auch möglich, den Zugriff auf alle Endpunkte der in apiResource festgelegten Beiträge einzuschränken, indem Sie Folgendes in die Routing-Datei schreiben.

api.php

sail php artisan install:api
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
sail artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Fall möchten wir die API-Token-Authentifizierung nur für die Speicher-, Aktualisierungs- und Löschaktionen im PostController festlegen. Erstellen Sie dazu eine Konstruktormethode in PostController und wenden Sie die Middleware auth:sanctum auf alle Aktionen außer index und show an.

PostController.php

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt müssen Benutzer das Token in die Anfrage aufnehmen, wenn sie einen Beitrag erstellen, aktualisieren oder löschen.

Beim Testen dieses Setups: Wenn Sie eine Anfrage ohne das Autorisierungstoken zum Erstellen eines Beitrags senden, wird ein 401-Fehler mit der Meldung „Nicht authentifiziert“ zurückgegeben und die Beitragserstellung schlägt fehl.

API Token Authentication

Wenn das Autorisierungstoken enthalten ist, werden die Daten erfolgreich erstellt.

API Token Authentication

In ähnlicher Weise erfordert die API zum Aktualisieren und Löschen von Beiträgen, dass die Anfrage mit dem Token im Authorization-Header gesendet wird.

Post-Inhaber-Verifizierung

Benutzerzugriffsbeschränkungen wurden mit der API-Token-Authentifizierung implementiert.
Es gibt jedoch immer noch ein Problem.
Im aktuellen Zustand können authentifizierte Benutzer die Beiträge anderer Benutzer aktualisieren oder löschen.
Fügen Sie einen Prozess hinzu, um zu überprüfen, ob der Benutzer Eigentümer des Beitrags ist.

API Token Authentication

  1. Der Benutzer sendet eine API-Anfrage und fügt das API-Token in den Autorisierungsheader ein.
  2. Die Middleware auth:sanctum gleicht das von der API-Anfrage empfangene API-Token mit dem in der Tabelle personal_access_tokens gespeicherten API-Token ab.
  3. Die Middleware auth:sanctum ruft den mit dem API-Token verknüpften Benutzer ab und prüft, ob dieser Benutzer Eigentümer des Zielbeitrags ist.
  4. Wenn das API-Token erfolgreich authentifiziert wurde und der Benutzer Eigentümer des Zielbeitrags ist, verarbeitet der Ressourcenserver die API-Anfrage.
  5. Der authentifizierte Benutzer, der Eigentümer von Beiträgen ist, kann Beiträge aktualisieren und löschen.
  6. Ressourcenserver gibt API-Antwort zurück.

Codierung

Schreiben Sie eine Autorisierungslogik in die Laravel-Richtliniendatei, sodass nur die Benutzer, die Eigentümer der Beiträge sind, die Beiträge aktualisieren und löschen können.

PostController.php

sail php artisan install:api
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Eine Anfrage erhalten
    • Der Benutzer sendet eine API-Anfrage und fügt das API-Token in den Autorisierungsheader ein.
  • Verifizierung des Tokens
    • Der Ressourcenserver erhält das API-Token aus dem Autorisierungsheader der API-Anfrage. Und überprüft dann, ob das von der Anfrage empfangene API-Token mit dem in der Tabelle „personal_access_tokens“ gespeicherten API-Token übereinstimmt.
  • Benutzeridentifikation
    • Wenn das Token gültig ist, wird der mit dem Token verknüpfte Benutzer identifiziert. Wir können den identifizierten Benutzer mit der Methode $request->user() abrufen.
  • Aufruf einer Richtlinie Die Methode Gate::authorize übergibt den authentifizierten Benutzer und die Ressourcenobjekte als Argumente an die Methoden der Richtlinie.

PostPolicy.php

sail artisan migrate
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

modifymethod:

  • Argumente:
    • $user: Instanz des aktuell authentifizierten Benutzers.
    • $post: Eine Instanz des Post-Modells.
  • Logik:
    • Überprüfen Sie, ob der aktuell authentifizierte Benutzer Eigentümer des angegebenen Beitrags ist.

Der Beitrag anderer Benutzer wird aktualisiert

API Token Authentication

  1. Legen Sie die Post-ID als Pfadparameter für den Post-Update-API-Endpunkt fest.
  2. Fügen Sie das Token eines Benutzers, dem dieser Beitrag nicht gehört, in den Autorisierungsheader ein.
  3. Gibt eine 403-Fehlermeldung zurück, die besagt, dass Sie nicht der Eigentümer des Beitrags sind.

Löschung des API-Tokens beim Abmelden

API Token Authentication

Abmeldefluss

  1. Benutzer sendet API-Anfrage und fügt API-Token in den Autorisierungsheader ein
  2. Die Middleware auth:sanctum gleicht das von der API-Anfrage empfangene API-Token mit dem in der Tabelle personal_access_tokens gespeicherten API-Token ab.
  3. Wenn das API-Token erfolgreich authentifiziert wurde, verarbeitet der Ressourcenserver die API-Anfrage.
  4. API-Token des authentifizierten Benutzers aus der Tabelle personal_access_tokens löschen.
  5. Ressourcenserver gibt API-Antwort zurück.

Codierung

api.php

2024_10_23_231407_create_personal_access_tokens_table ......... 3.84ms DONE
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wenden Sie die Middleware auth::sanctum für das Abmelderouting an und legen Sie die API-Token-Authentifizierung fest.

AuthController.php

Route::post('/register', [AuthController::class, 'register']);
Nach dem Login kopieren
Nach dem Login kopieren

Der Server löscht das aktuelle API-Token aus der Datenbank. Dadurch wird der Token ungültig und kann nicht erneut verwendet werden.
Der Server gibt eine Antwort an den Client zurück, die angibt, dass die Abmeldung erfolgreich war.

Zusammenfassung

In diesem Artikel wurde die API-Token-Authentifizierung anhand von Diagrammen leicht verständlich erklärt.
Durch die Nutzung von Laravel Sanctum kann eine einfache und sichere Authentifizierung mithilfe von API-Token erreicht werden, die es Clients ermöglichen, einzelnen Benutzern Zugriffsrechte mit einer Flexibilität zu gewähren, die sich von der sitzungsbasierten Authentifizierung unterscheidet. Mithilfe von Middleware und Richtlinien können API-Anfragen außerdem effizient geschützt, der Zugriff eingeschränkt und der Ressourcenbesitz überprüft werden.

Das obige ist der detaillierte Inhalt vonAPI-Token-Authentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage