Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie JWT für die API-Authentifizierung in PHP

So verwenden Sie JWT für die API-Authentifizierung in PHP

PHPz
PHPzOriginal
2023-06-17 22:04:281220Durchsuche

Mit der Entwicklung von Webanwendungen ist die API-Authentifizierung zu einem integralen Bestandteil moderner Webanwendungen geworden. JSON Web Token (JWT) ist ein offener Standard für Authentifizierung und Autorisierung, der eine sichere und zuverlässige Möglichkeit zur Authentifizierung von Benutzern und zur Implementierung von Single Sign-On bietet. In diesem Artikel wird erläutert, wie Sie JWT für die API-Authentifizierung in PHP verwenden.

Was ist JWT?

JSON Web Token (JWT) ist ein auf dem JSON-Format basierender Standard, mit dem Informationen sicher über das Internet übertragen werden können. JWT besteht normalerweise aus drei Teilen: Header, Payload und Signatur.

  • Header: Enthält den von JWT verwendeten Algorithmus, z. B. HMAC SHA256 oder RSA.
  • Payload: Enthält Daten über Benutzer, Berechtigungen oder andere verwandte Informationen.
  • Signatur: Wird zur Überprüfung der Authentizität und Integrität des Tokens verwendet.

JWT-Workflow

Wenn sich ein Benutzer anmeldet, weist der Server dem Benutzer ein JWT zu. Dieses JWT wird an den Client gesendet und im Cookie oder lokalen Speicher des Clients gespeichert. Wenn ein Benutzer auf eine geschützte API zugreifen möchte, sendet der Client ein JWT zurück an den Server. Der Server überprüft die Signatur des JWT und verifiziert die Daten in der Nutzlast, um sicherzustellen, dass der Benutzer über die Berechtigung zum Zugriff auf die API verfügt. Wenn das JWT die Validierung besteht, autorisiert der Server den Benutzer, auf die API zuzugreifen.

JWT-Authentifizierung mit PHP implementieren

In PHP können wir einige beliebte Open-Source-Bibliotheken verwenden, um die JWT-Authentifizierung zu implementieren. In diesem Artikel wird die JWT-Bibliothek von Firebase verwendet, die eine einfache API zum Erstellen und Überprüfen von JWTs bereitstellt. Hier ist ein einfaches Beispiel:

  1. Installieren Sie die Firebase-JWT-Bibliothek:

Composer benötigt Firebase/php-jwt

  1. Erstellen Sie ein JWT:

Der folgende Code erstellt ein JWT, das eine Signatur und eine benutzerdefinierte Nutzlast enthält Daten.

use FirebaseJWTJWT;

// Set the payload data (custom data)
$payload = [
    "user_id" => 1,
    "username" => "john.doe",
];
 
// Generate JWT using secret key
$jwt = JWT::encode($payload, 'secret_key');
  1. JWT überprüfen:

Der folgende Code überprüft die Signatur des JWT und prüft, ob die Nutzlastdaten gültig sind.

use FirebaseJWTJWT;

// Verify JWT using secret key
try {
    $decoded = JWT::decode($jwt, 'secret_key', array('HS256'));
} catch (Exception $e) {
    // Handle invalid JWT
}
 
// Access the payload data
$user_id = $decoded->user_id;
$username = $decoded->username;
  1. JWT an den Kunden senden:

Nachdem wir das JWT erstellt haben, können wir es an den Kunden senden und in einem Cookie oder lokalen Speicher speichern.

// Set JWT as a cookie
setcookie('token', $jwt, time()+3600, '/');
  1. Überprüfen Sie das vom Client gesendete JWT:

Wir können einen ähnlichen Code wie auf der Serverseite verwenden, um das vom Client gesendete JWT zu überprüfen.

use FirebaseJWTJWT;

// Get JWT from cookie or local storage
$jwt = $_COOKIE['token'];
 
// Verify JWT using secret key
try {
    $decoded = JWT::decode($jwt, 'secret_key', array('HS256'));
} catch (Exception $e) {
    // Handle invalid JWT
}
 
// Access the payload data
$user_id = $decoded->user_id;
$username = $decoded->username;

Zusammenfassung

JWT ist ein sicherer und zuverlässiger Authentifizierungsmechanismus für moderne Webanwendungen. Die JWT-Authentifizierung kann einfach mithilfe der PHP- und Firebase-JWT-Bibliothek implementiert werden. Achten Sie bei der Implementierung der API-Authentifizierung darauf, JWTs nur an einem sicheren Ort zu speichern und HTTPS für die geschützte Übertragung zu verwenden.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie JWT für die API-Authentifizierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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