


PHP-Entwicklung: So verwenden Sie JWT zur Authentifizierung und Autorisierung
In der modernen Webanwendungsentwicklung ist Sicherheit zu einem integralen Bestandteil geworden. Authentifizierung und Autorisierung sind in diesem Zusammenhang von entscheidender Bedeutung, da sie sicherstellen, dass nur autorisierte Benutzer auf geschützte Ressourcen zugreifen können. Es stehen zahlreiche Authentifizierungs- und Autorisierungsmechanismen zur Verfügung, von denen JWT (JSON Web Token) ein besonders beliebter Mechanismus ist, da er einfach, flexibel, skalierbar und sicher ist. In diesem Artikel erfahren Sie, wie Sie PHP und JWT zur Authentifizierung und Autorisierung verwenden.
Teil Eins: JWT-Grundlagen
JSON Web Token (JWT) ist ein offener Standard für die sichere Übertragung von Ansprüchen und Authentifizierungsinformationen über das Web. Es besteht aus drei Teilen: Header, Payload und Signatur.
Der Header enthält Informationen zum Algorithmus und zum Tokentyp. Ein Beispiel dafür könnte so aussehen:
{ "alg": "HS256", "typ": "JWT" }
Die Nutzlast enthält die Informationen, die übertragen werden müssen. Zum Beispiel Benutzername, Rolle und andere Informationen über den Benutzer. Ein Beispiel für eine Nutzlast könnte wie folgt aussehen:
{ "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }
Eine Signatur ist eine verschlüsselte Zeichenfolge, die den Schlüssel enthält, der zur Überprüfung der Gültigkeit des JWT verwendet wird. Ein Beispiel für eine Signatur könnte so aussehen:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(claims), secret)
Teil 2: JWT mit PHP implementieren
Um JWT zur Authentifizierung und Autorisierung zu verwenden, benötigen wir eine PHP-Klasse, um das JWT zu generieren und zu überprüfen. Schauen wir uns die Implementierung einer einfachen PHP-JWT-Klasse an.
<?php class JWT { private $header; private $payload; private $secret; public function __construct($header, $payload, $secret) { $this->header = $header; $this->payload = $payload; $this->secret = $secret; } public function encode() { $header = $this->base64UrlEncode(json_encode($this->header)); $payload = $this->base64UrlEncode(json_encode($this->payload)); $signature = $this->base64UrlEncode(hash_hmac('sha256', $header . '.' . $payload, $this->secret, true)); return $header . '.' . $payload . '.' . $signature; } public function decode($jwt) { $parts = explode('.', $jwt); $header = json_decode($this->base64UrlDecode($parts[0]), true); $payload = json_decode($this->base64UrlDecode($parts[1]), true); $signature = $this->base64UrlDecode($parts[2]); $result = hash_hmac('sha256', $parts[0] . '.' . $parts[1], $this->secret, true); if (hash_equals($result, $signature)) { return $payload; } else { return null; } } private function base64UrlEncode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } private function base64UrlDecode($data) { return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); } }
In dieser PHP-Klasse speichern $header
, $payload
und $secret
den JWT-Header, die Nutzlast und die Schlüsselinformationen. Die Methode encode()
verwendet header
, payload
und secret
, um einen JWT-String zu generieren. Die Methode decode()
verwendet die angegebene JWT-Zeichenfolge und den angegebenen Schlüssel, um Nutzlastinformationen abzurufen. $header
、$payload
和 $secret
存储了 JWT 的头部、载荷和密钥信息。encode()
方法使用 header
、payload
和 secret
来生成 JWT 字符串。decode()
方法使用给定的 JWT 字符串和密钥来获取载荷信息。
base64UrlEncode()
和 base64UrlDecode()
方法用于编码和解码 JWT 的头部和载荷。
第三部分:将 JWT 用于身份认证和授权
现在,我们已经了解了 JWT 的基础知识,并且有一个 PHP JWT 类用于生成和验证 JWT。那么,我们如何将 JWT 用于身份认证和授权呢?
首先,当用户登录时,可以使用 JWT 发送一个令牌来验证他们的身份。服务器将生成一个带有用户名和密码有效载荷的 JWT,并将其发送给客户端。客户端将在每个请求中将此令牌作为 Authorization 标头的 Bearer 认证方案进行发送。服务器将从标头中提取 JWT 并根据需要验证其有效性。
以下是一个示例 JWT 实现用于身份认证和授权:
<?php // 使用 JWT 登录 function login($username, $password) { // 检查用户名和密码是否正确 $is_valid = validate_user_credentials($username, $password); if (!$is_valid) { return null; } // 生成 JWT $header = array('alg' => 'HS256', 'typ' => 'JWT'); $payload = array('sub' => $username); $jwt = new JWT($header, $payload, $GLOBALS['secret']); $token = $jwt->encode(); // 返回 JWT return $token; } // 验证 JWT function validate_token($jwt) { $jwt = new JWT($header, $payload, $GLOBALS['secret']); $payload = $jwt->decode($jwt); if ($payload == null) { return false; } // 验证成功 return true; } // 保护资源 function protect_resource() { // 检查 JWT 是否有效 $jwt = get_authorization_header(); if (!validate_token($jwt)) { http_response_code(401); exit(); } // 资源保护 // ... } // 从标头获取 JWT function get_authorization_header() { $headers = getallheaders(); if (isset($headers['Authorization'])) { return $headers['Authorization']; } return null; } // 检查用户名和密码是否正确 function validate_user_credentials($username, $password) { // 验证用户名和密码 // ... return true; } // 密钥 $GLOBALS['secret'] = "my-secret"; // 登录并获取 JWT $token = login("username", "password"); // 将 JWT 添加到标头 $headers = array('Authorization: Bearer ' . $token); // 保护资源 protect_resource($headers);
在这个示例中,login()
方法使用 JWT
类创建一个 JWT,并返回它以便客户端使用。validate_token()
方法可以验证 JWT 的有效性。如果 JWT 无效,将返回 false。
get_authorization_header()
方法从请求标头中提取 JWT。 protect_resource()
方法用于保护 Web 资源。如果 JWT 无效,该函数将引发 401 错误。
最后,在全局范围内定义了一个密钥,$GLOBALS ['secret']
base64UrlEncode()
und base64UrlDecode()
werden zum Kodieren und Dekodieren des JWT-Headers und der Nutzlast verwendet. Teil 3: Verwendung von JWT zur Authentifizierung und AutorisierungJetzt haben wir die Grundlagen von JWT verstanden und verfügen über eine PHP-JWT-Klasse zum Generieren und Validieren von JWT. Wie nutzen wir also JWT zur Authentifizierung und Autorisierung? 🎜🎜Wenn sich ein Benutzer anmeldet, können Sie mit JWT zunächst ein Token senden, um seine Identität zu überprüfen. Der Server generiert ein JWT mit den Nutzdaten aus Benutzername und Passwort und sendet es an den Client. Der Client sendet dieses Token bei jeder Anfrage als Autorisierungsheader des Bearer-Authentifizierungsschemas. Der Server extrahiert das JWT aus dem Header und überprüft bei Bedarf seine Gültigkeit. 🎜🎜Hier ist eine Beispiel-JWT-Implementierung für Authentifizierung und Autorisierung: 🎜rrreee🎜In diesem Beispiel erstellt die Methode login()
ein JWT mithilfe der Klasse JWT
und gibt „Ist“ zurück für den Kundengebrauch. Die Methode validate_token()
kann die Gültigkeit des JWT überprüfen. Wenn das JWT ungültig ist, wird false zurückgegeben. Die Methode 🎜🎜get_authorization_header()
extrahiert das JWT aus dem Anforderungsheader. Die Methode protect_resource()
wird zum Schutz von Webressourcen verwendet. Wenn das JWT ungültig ist, löst diese Funktion einen 401-Fehler aus. 🎜🎜Abschließend wird im globalen Bereich ein Geheimnis definiert, $GLOBALS ['secret']
, das eine lange Zeichenfolge sein sollte. Bitte beachten Sie, dass es sich bei diesem Passwort um ein geheimes Passwort handelt und nicht in Ihre Codebasis aufgenommen werden sollte. Normalerweise wird dieser Schlüssel in einer Umgebungsvariablen gespeichert und vom Betriebssystem verwaltet, auf dem der Webserver läuft. 🎜🎜Fazit🎜🎜JWT ist ein sehr einfacher, flexibler, skalierbarer und sicherer Mechanismus zur Authentifizierung und Autorisierung in Webanwendungen. In diesem Artikel haben wir uns mit den Grundlagen von JWT befasst und eine Beispiel-PHP-Klasse zum Generieren und Validieren von JWT gesehen. Wir haben auch gesehen, wie JWT zur Authentifizierung und Autorisierung verwendet werden kann. Jetzt können Sie JWT in Ihren Webanwendungen ausprobieren, um sicherzustellen, dass Ihre Apps sicherer sind. 🎜Das obige ist der detaillierte Inhalt vonPHP-Entwicklung: So verwenden Sie JWT zur Authentifizierung und Autorisierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wenn wir die aktuelle Win10 Enterprise Edition 2016 Long-Term Service Edition nicht mehr verwenden möchten, können wir auf die Professional Edition umsteigen. Die Methode ist auch sehr einfach. Wir müssen nur einige Inhalte ändern und das System-Image installieren. So ändern Sie die Langzeitdienstversion von Win10 Enterprise Version 2016 in die Professional-Version 1. Drücken Sie Win+R und geben Sie dann „regedit“ ein. 2. Fügen Sie den folgenden Pfad direkt in die Adressleiste oben ein: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , suchen Sie dann die EditionID und ersetzen Sie den Inhalt zur Bestätigung durch „professional“.

Mit der Entwicklung des Internets müssen immer mehr Websites und Anwendungen API-Schnittstellen für die Dateninteraktion bereitstellen. In diesem Fall werden API-Authentifizierung und -Verschlüsselung zu sehr wichtigen Themen. Als beliebte Authentifizierungs- und Verschlüsselungsmechanismen werden JWT und JWE zunehmend in PHP verwendet. In diesem Artikel wird erläutert, wie Sie JWT und JWE für die API-Authentifizierung und -Verschlüsselung in PHP verwenden. Grundkonzepte von JWT JWT steht für JSONWe

JWT (JSONWebToken) ist ein einfacher Authentifizierungs- und Autorisierungsmechanismus, der JSON-Objekte als Sicherheitstoken verwendet, um Benutzeridentitätsinformationen sicher zwischen mehreren Systemen zu übertragen. ThinkPHP6 ist ein effizientes und flexibles MVC-Framework, das auf der PHP-Sprache basiert. Es bietet viele nützliche Tools und Funktionen, einschließlich des JWT-Authentifizierungsmechanismus. In diesem Artikel stellen wir vor, wie Sie ThinkPHP6 für die JWT-Authentifizierung verwenden, um die Sicherheit und Zuverlässigkeit von Webanwendungen zu gewährleisten

OAuth in PHP: Erstellen eines JWT-Autorisierungsservers Mit dem Aufkommen mobiler Anwendungen und dem Trend zur Trennung von Front-End und Back-End ist OAuth zu einem unverzichtbaren Bestandteil moderner Webanwendungen geworden. OAuth ist ein Autorisierungsprotokoll, das die Ressourcen der Benutzer vor unbefugtem Zugriff schützt, indem es standardisierte Prozesse und Mechanismen bereitstellt. In diesem Artikel erfahren Sie, wie Sie mit PHP einen auf JWT (JSONWebTokens) basierenden OAuth-Autorisierungsserver erstellen. JWT ist eine Art von

Analyse der sicheren JWT-Token-Generierungs- und Verifizierungstechnologie in PHP Mit der Entwicklung von Netzwerkanwendungen werden Benutzerauthentifizierung und -autorisierung immer wichtiger. JsonWebToken (JWT) ist ein offener Standard (RFC7519) zur sicheren Übertragung von Informationen in Webanwendungen. In der PHP-Entwicklung ist es gängige Praxis, JWT-Tokens zur Benutzerauthentifizierung und -autorisierung zu verwenden. In diesem Artikel wird die sichere JWT-Token-Generierungs- und Verifizierungstechnologie in PHP vorgestellt. 1. Grundkenntnisse von JWT im Verständnis der Generierung von und

Vue.js ist ein beliebtes JavaScript-Framework zum Erstellen dynamischer Webanwendungen. Die Implementierung der Benutzeranmeldeauthentifizierung ist einer der notwendigen Bestandteile bei der Entwicklung von Webanwendungen. In diesem Artikel wird eine vollständige Anleitung zur Implementierung der Anmeldeüberprüfung mit Vue.js, API, JWT und Axios vorgestellt. Erstellen einer Vue.js-Anwendung Zuerst müssen wir eine neue Vue.js-Anwendung erstellen. Wir können eine Vue.js-Anwendung mit VueCLI oder manuell erstellen. Axiosax installieren

So verwenden Sie Flask-Security zur Implementierung der Benutzerauthentifizierung und -autorisierung Einführung: In modernen Webanwendungen sind Benutzerauthentifizierung und -autorisierung wesentliche Funktionen. Um diesen Prozess zu vereinfachen, ist Flask-Security eine sehr nützliche Erweiterung, die eine Reihe von Tools und Funktionen bereitstellt, um die Benutzerauthentifizierung und -autorisierung einfach und bequem zu gestalten. In diesem Artikel wird erläutert, wie Sie mit Flask-Security die Benutzerauthentifizierung und -autorisierung implementieren. 1. Installieren Sie die Flask-Security-Erweiterung: am Anfang

UniApp implementiert eine detaillierte Analyse der Benutzeranmeldung und -autorisierung. In der modernen mobilen Anwendungsentwicklung sind Benutzeranmeldung und -autorisierung wesentliche Funktionen. Als plattformübergreifendes Entwicklungsframework bietet UniApp eine bequeme Möglichkeit, Benutzeranmeldung und -autorisierung zu implementieren. In diesem Artikel werden die Details der Benutzeranmeldung und -autorisierung in UniApp erläutert und entsprechende Codebeispiele beigefügt. 1. Implementierung der Benutzeranmeldefunktion. Erstellen Sie eine Anmeldeseite. Für die Benutzeranmeldefunktion ist normalerweise eine Anmeldeseite erforderlich, die ein Formular für Benutzer zur Eingabe ihrer Kontonummer und ihres Kennworts sowie eine Anmeldeschaltfläche enthält
