PHP verwendet JWT, um ein einfaches Token-Beispiel zu erstellen
Abhängigkeiten
Umgebung: PHP 5.5 oder höher + OpenSSL-Erweiterung
lcobucci/JWT
Sie können Composer zur Installation verwenden
Composer erfordert lcobucci/jwt
Sie können auch direkt von GitHub herunterladen
GitHub-Adresse: https://github.com/lcobucci/jwt
Parametererklärung
|
|||||||||||||||||
iss (issuer)issuer | Die anfragende Entität kann die Information des Benutzers sein Wer hat die Anfrage initiiert, oder es kann sich um den jwt-Aussteller handeln | ||||||||||||||||
sub (Betreff ) | Legen Sie den Betreff fest, ähnlich dem Betreff beim Senden einer E-Mail | ||||||||||||||||
aud (Publikum) | Die Partei, die jwt empfängt | ||||||||||||||||
exp (expire)token | Ablaufzeitraum|||||||||||||||||
nbf (nicht vorher) | Die aktuelle Zeit ist Der Token kann nicht verwendet werden, bevor nbf die Zeit festlegt | ||||||||||||||||
iat (ausgestellt bei )token | Erstellungszeit | tr>||||||||||||||||
jti (JWT-ID) | Legen Sie eine eindeutige Kennung für das aktuelle Token fest |
define('DS', DIRECTORY_SEPARATOR); define('JWTPath', dirname(__FILE__) . DS); include_once JWTPath . 'Builder.php'; include_once JWTPath . 'Signer.php'; include_once JWTPath . 'Signer' . DS . 'Keychain.php'; include_once JWTPath . 'Signer' . DS . 'Rsa.php'; include_once JWTPath . 'Signer' . DS . 'Rsa' . DS . 'Sha256.php';
Beispiel
Es gibt zwei Möglichkeiten, Token mit [lcobucci/JWT] zu generieren. Ich habe hier nur die zweite getestet. Der erste: Verwenden Sie die Signatur des geheimen Schlüssels, um das Token zu generierenuse Lcobucci\JWT\Builder; use Lcobucci\JWT\Signer\Hmac\Sha256; $builder = new Builder(); $signer = new Sha256(); // 设置发行人 $builder->setIssuer('http://example.com'); // 设置接收人 $builder->setAudience('http://example.org'); // 设置id $builder->setId('4f1g23a12aa', true); // 设置生成token的时间 $builder->setIssuedAt(time()); // 设置在60秒内该token无法使用 $builder->setNotBefore(time() + 60); // 设置过期时间 $builder->setExpiration(time() + 3600); // 给token设置一个id $builder->set('uid', 1); // 对上面的信息使用sha256算法签名 $builder->sign($signer, '签名key'); // 获取生成的token $token = $builder->getToken();
use Lcobucci\JWT\Signer\Hmac\Sha256; $parse = (new Parser())->parse($token); $signer = new Sha256(); $parse->verify($signer,'签名key');// 验证成功返回true 失败false
RSA- und ECDSA-Signaturen basieren auf öffentlichen und privaten Schlüsseln, daher muss der private Schlüssel zum Generieren und Verifizieren mit
use Lcobucci\JWT\Signer\Keychain; // 注意这里使用的sha256 use Lcobucci\JWT\Signer\Rsa\Sha256; $signer = new Sha256(); $keychain = new Keychain(); $builder = new Builder(); $builder->setIssuer('http://example.com'); $builder->setAudience('http://example.org'); $builder->setId('4f1g23a12aa', true); $builder->setIssuedAt(time()); $builder->setNotBefore(time() + 60); $builder->setExpiration(time() + 3600); $builder->set('uid', 1); // 与上面不同的是这里使用的是你的私钥,并提供私钥的地址 $builder->sign($signer, $keychain->getPrivateKey('file://{私钥地址}')); $toekn = $builder->getToken();
$signer = new \Lcobucci\JWT\Signer\Rsa\Sha256(); $keychain = new \Lcobucci\JWT\Signer\Keychain(); $parse = new \Lcobucci\JWT\Parser(); $parse->parse((string)$token); var_dump($token->verify($signer, $keychain->getPublicKey(self::$dir . '/public.key'))); ))
$parse = (new Parser())->parse($token); // 获取全部信息,返回一个数组, var_dump($parse->getClaims()); // 获取单条信息 var_dump($parse->getClaim('aud'));
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die Verwendung von JWT zum Erstellen von Token in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!