PHP实现JWT lcobucci/jwt生成jwt token

简介: PHP实现JWT lcobucci/jwt生成jwt token

github: github.com/lcobucci/jw…

1.安装

PHP 5.5+ (v3.2) and PHP 7.1 (v4.x)
OpenSSL Extension
"lcobucci/jwt": "^3.3"
composer require lcobucci/jwt

2. 一些参数说明

iss 【issuer】发布者的url地址
sub 【subject】该JWT所面向的用户,用于处理特定应用,不是常用的字段
aud 【audience】接受者的url地址
exp 【expiration】 该jwt销毁的时间;unix时间戳
nbf 【not before】 该jwt的使用时间不能早于该时间;unix时间戳
iat 【issued at】 该jwt的发布时间;unix 时间戳
jti 【JWT ID】 该jwt的唯一ID编号

3.使用

生成,验证token

namespace App\Common;
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use InvalidArgumentException;
class Jwt
{
    //私钥,没有私钥不会认证通过
    private $secret = "OOOO_WWW_EE_N__@server.zhang.com^1#096&24%2020";
    //令牌的过期时间
    private $tokenTtl = 60 * 60 * 2;
    //验证token
    public function checkTokenJWT($token)
    {
        try{
            $signer = new Sha256();
            if (!$token) {
                return false;
            }
            $parser = new Parser();
            $parse = $parser->parse($token);
            ////先验证私钥
            if ($parse->verify($signer, $this->secret) === false) {
                return false;
            } else {
                return [
                    'user_id' => $parse->getClaim("user_id"),
                    'user_name' => $parse->getClaim('user_name')
                ];
            }
        }catch (InvalidArgumentException $e){
            return false;
        }
    }
    //生成token
    public function newTokenJWT($userId)
    {
        $builder = new Builder();
        $signer = new Sha256();
        //发布端url颁发者
        $builder->setIssuer("server.owenzhang.cn");
        //请求端URL访问群体
        $builder->setAudience("owenzhang-user-token");
        //唯一的jwt id作为头项复制
        $builder->setId("fu51server", true);
        //配置颁发令牌的时间
        $builder->setIssuedAt(time());
        //令牌可以使用的时间
        $builder->setNotBefore(time() + 5);
        //令牌的过期时间
        $builder->setExpiration(time() + $this->tokenTtl);
        //配置一个名为“user_id”的新声明
        $builder->set("user_id", $userId);
        //使用“$this->secret”作为密钥创建签名
        $builder->sign($signer, $this->secret);
        //生成的令牌
        $token = $builder->getToken();
        $tokenStr = (string)$token;
        return $tokenStr;
    }
}


目录
相关文章
|
7月前
|
JSON JavaScript 前端开发
❤Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
114 0
|
7月前
|
存储 NoSQL 前端开发
jwt与redis,把生成的token放入redis中进行临时存储
jwt与redis,把生成的token放入redis中进行临时存储
459 0
|
24天前
|
JSON 安全 Go
Go语言中使用JWT鉴权、Token刷新完整示例,拿去直接用!
本文介绍了如何在 Go 语言中使用 Gin 框架实现 JWT 用户认证和安全保护。JWT(JSON Web Token)是一种轻量、高效的认证与授权解决方案,特别适合微服务架构。文章详细讲解了 JWT 的基本概念、结构以及如何在 Gin 中生成、解析和刷新 JWT。通过示例代码,展示了如何在实际项目中应用 JWT,确保用户身份验证和数据安全。完整代码可在 GitHub 仓库中查看。
96 1
|
3月前
|
存储 中间件 API
ThinkPHP 集成 jwt 技术 token 验证
本文介绍了在ThinkPHP框架中集成JWT技术进行token验证的流程,包括安装JWT扩展、创建Token服务类、编写中间件进行Token校验、配置路由中间件以及测试Token验证的步骤和代码示例。
ThinkPHP 集成 jwt 技术 token 验证
|
3月前
|
JSON 安全 数据安全/隐私保护
从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
【9月更文挑战第22天】在.NET 8中,从零开始搭建权限管理系统并使用JWT(JSON Web Tokens)创建Token是关键步骤。JWT是一种开放标准(RFC 7519),用于安全传输信息,由头部、载荷和签名三部分组成。首先需安装`Microsoft.AspNetCore.Authentication.JwtBearer`包,并在`Program.cs`中配置JWT服务。接着,创建一个静态方法`GenerateToken`生成包含用户名和角色的Token。最后,在控制器中使用`[Authorize]`属性验证和解析Token,从而实现身份验证和授权功能。
180 3
|
4月前
|
存储 JSON JavaScript
震撼!Cookie、Session、Token、JWT 终极对决:揭开 Web 认证的神秘面纱!
【8月更文挑战第13天】Web 开发中,Cookie、Session、Token 和 JWT 常混淆。Cookie 是服务器给客户端的小信息片,如登录状态,每次请求都会返回。Session 则是服务器存储的用户数据,通过 Session ID 追踪。Token 类似通行证,证明客户端身份且可加密。JWT 是结构化的 Token,含头部、载荷及签名,确保数据完整性和安全性。
71 4
|
4月前
|
API
【Azure Developer】记录一段验证AAD JWT Token时需要设置代理获取openid-configuration内容
【Azure Developer】记录一段验证AAD JWT Token时需要设置代理获取openid-configuration内容
|
4月前
|
JSON Java API
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
102 0
|
4月前
|
JSON 算法 API
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
|
4月前
|
存储 开发框架 JSON
ASP.NET Core 标识(Identity)框架系列(二):使用标识(Identity)框架生成 JWT Token
ASP.NET Core 标识(Identity)框架系列(二):使用标识(Identity)框架生成 JWT Token