thinkPHP框架里,PHP 用 JWT 详解

PHP 用 JWT 详解

    • 1、JWT是什么?
    • 2、JWT 如何运行?
    • 3、JWT 内容加密
    • 4、thinkPHP 怎么用呢?
    • 5、PHP运用JWT

1、JWT是什么?

JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。
现在,JSON Web Tokens (JWT) 是非常流行的。尤其是 Web 开发领域。

流行
安全
稳定
易用
支持
JSON

所有这些因素,令 JWT 名声大振。

2、JWT 如何运行?

JWT 是 JSON 格式的被加密了的字符串。

JWT 的核心是密钥,就是 JSON 数据。这是你关心的,并希望安全传递出去的数据。JWT 如何做到这一点,并使你信任它,就是加密签名。

比如说,我写了一封信,当我署名这封信时,意味着只要读过这封信的人,都知道是我写了这封信。而且我的签名是独一无二的,所以不会被怀疑真实性。加密签名的方式大致相同,JWT 有两种加密方式:对称加密和非对称加密,两种方式有同等的效用。

3、JWT 内容加密

其实,JWT 的内容(内部的 JSON 数据)通常是不加密的。这意味着,即使没有密钥,也可以查看 JWT 内的数据。JWT 默认并不会加密你的数据,它只是帮助你验证是你信任的一方创建了它。

如果你确实需要加密 JWT 内容,可以使用 JWE 进行加密,但这种做法并不常见。请确保使用了正确的方法。

4、thinkPHP 怎么用呢?

引入这个JWT类文件,github地址 PHP-JWT
你用composer把它引入到thinkPHP框架里

5、PHP运用JWT

(1)公共密钥的加密解密
use \Firebase\JWT\JWT;

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

$jwt = JWT::encode($token, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));

print_r($decoded);



$decoded_array = (array) $decoded;

JWT::$leeway = 60; // $leeway in seconds
$decoded = JWT::decode($jwt, $key, array('HS256'));

?>

(2)私钥和密钥的加密解密

 "example.org",
    "aud" => "example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($token, $privateKey, 'RS256');
echo "Encode:\n" . print_r($jwt, true) . "\n";

$decoded = JWT::decode($jwt, $publicKey, array('RS256'));

$decoded_array = (array) $decoded;
echo "Decode:\n" . print_r($decoded_array, true) . "\n";
?>

你可能感兴趣的:(PHP,thinkPHP)