PHP utilise JWT pour créer un exemple de jeton simple
Dépendances
Environnement : php 5.5 ou supérieur + extension OpenSSL
lcobucci/JWT
Vous pouvez utiliser composer pour installer
composer nécessite lcobucci/jwt
Vous pouvez également télécharger directement depuis GitHub
Adresse GitHub : https://github.com/lcobucci/jwt
Explication des paramètres
|
|||||||||||||||||
iss (issuer)issuer | L'entité demandeuse peut être les informations de l'utilisateur qui a initié la demande, ou il peut s'agir de jwt Issuer | ||||||||||||||||
sub (Sujet ) | Définissez le sujet, similaire au sujet lors de l'envoi d'un e-mail | ||||||||||||||||
aud (audience) | La partie recevant jwt | ||||||||||||||||
jeton exp (expire) | Période d'expiration|||||||||||||||||
nbf (pas avant) | L'heure actuelle est Le jeton ne peut pas être utilisé avant que nbf ne règle l'heure | ||||||||||||||||
iat (émis à )token | Heure de création | tr>||||||||||||||||
jti (ID JWT) | Définir un identifiant unique pour le jeton actuel |
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';
Exemple
Il existe deux façons de générer un jeton en utilisant [lcobucci/JWT]. Le premier : utilisez la signature de clé secrète pour générer le jetonuse 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
Les signatures RSA et ECDSA sont basées sur des clés publiques et privées, donc la clé privée doit être utilisée pour générer et vérifier à l'aide de
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'));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!