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

So verwenden Sie JSON-Web-Tokens für die API-Authentifizierung in PHP

PHPz
PHPzOriginal
2023-06-17 19:04:381388Durchsuche

JSON Web Tokens (JWT) sind eine sichere Methode zur Übertragung von Informationen in Webanwendungen. Es handelt sich um einen offenen Standard (RFC 7519), der eine kompakte, eigenständige und sichere Möglichkeit zur sicheren Übertragung von Informationen als JSON-Objekte definiert. Der Einsatz von JWT ist besonders wichtig, wenn APIs zur Authentifizierung verwendet werden. In PHP können wir die JWT-Authentifizierung durch einige einfache Schritte implementieren.

  1. Installieren Sie die JWT-Bibliothek

Zuerst müssen wir die JWT-Bibliothek über Composer installieren. Fügen Sie den folgenden Code in Ihre Composer.json-Datei ein:

{
    "require": {
        "firebase/php-jwt": "3.0.*"
    }
}

Alternativ können Sie im Terminal mit dem folgenden Befehl installieren:

composer require firebase/php-jwt
  1. JWT erstellen

Vor der API-Authentifizierung müssen wir ein JWT erstellen. In PHP können wir ein JWT mit dem folgenden Code erstellen:

use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);

In diesem Beispiel erstellen wir einen Schlüssel namens $key und verwenden das Array $payload als Nutzlast des JWT. Die Nutzlast enthält einige grundlegende Informationen wie „iss“ (Aussteller), „aud“ (Empfänger), „iat“ (Ausstellungszeit) und „nbf“ (Gültigkeitszeit), die bei der API-Authentifizierung verwendet werden.

  1. JWT überprüfen

Der Prozess der Validierung eines JWT ist das Gegenteil des Prozesses seiner Erstellung. Wir müssen den geheimen Schlüssel und das ursprüngliche JWT verwenden, um das JWT zu entschlüsseln und die darin enthaltenen Informationen zu überprüfen. In PHP können wir den folgenden Code verwenden, um das JWT zu validieren:

use FirebaseJWTJWT;

$key = "example_key";
$jwt = $_POST["jwt"];

try {
    $decoded = JWT::decode($jwt, $key, array('HS256'));
    return $decoded;

} catch (Exception $e) {
    return false;
}

Hier verwenden wir $_POST["jwt"], um das Roh-JWT an den Server zu senden. Anschließend übergeben wir den Schlüssel und die Verschlüsselungsregeln als Parameter an die Methode JWT::decode(). Wenn die Überprüfung erfolgreich ist, gibt diese Methode die JWT-Nutzdaten zurück.

  1. JWT an den Client senden

In PHP können wir JWT an den Client senden und den Client in jeder Anfrage JWT als Authentifizierungsnachweis senden lassen. Im folgenden Beispiel speichern wir das JWT in $_SESSION und senden es an den Client zurück:

use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);

$_SESSION["jwt"] = $jwt;

header('Content-Type: application/json');
echo json_encode(array("jwt" => $jwt));

Hier speichern wir das JWT mit $_SESSION["jwt"] und senden es als JSON-Objektende an den Client zurück. Der Client kann das JWT lokal speichern und zur Authentifizierung an die API senden.

Zusammenfassung

Der Prozess der Verwendung von JWT für die API-Authentifizierung in PHP ist sehr einfach. Befolgen Sie einfach die obigen Schritte. Die Verwendung von JWT zur Authentifizierung verbessert nicht nur die Sicherheit, sondern auch die Leistung Ihrer Anwendung, da keine Authentifizierung bei jeder Anfrage erforderlich ist. Bitte beachten Sie jedoch, dass ein Verlust oder Diebstahl des Schlüssels durch einen Hacker fatale Auswirkungen auf die Anwendung haben kann. Bewahren Sie den Schlüssel daher unbedingt an einem sicheren Ort auf.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie JSON-Web-Tokens 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