JWT基础

概念

JSON Web Token
    本质上就是一串字符串,一串包含了很多信息的字符串令牌
    拥有三个部分
        头部
            -包含加密算法和令牌类型
                {
                    "alg":"算法名称",
                    "type":"JWT"
                }
        负载
            -包含数据和信息-七个官方默认-也可以自己定义内容
                {
                    iss:发行人
                    exp:到期时间
                    sub:主题
                    aud:用户
                    nbf:在此之前不可用
                    iat:发布时间
                    jti:JWT ID用于标识该JWT
                }
        签名
            -可以保护数据不被篡改

java-jwt

jwt在java中的应用
    token验证
        1.收到用户客户端输入的用户名和密码的登录请求
        2.验证通过
        3.返回给用户客户端一个生成的token
        4.用户客户端收到token后存储在客户端-localstorage/cookies
        5.用户客户端每次请求后端服务时都会携带token-在头部信息header中携带
        6.后端服务接受token,验证通过则返回给请求的数据,否则请求失败
    在java应用中
        -验证通过时:创建token
        -后端请求时:解析token

创建token

1.创建头部
    创建map集合,将头部信息放进去
        -Map map = new HashMap<>()
            map.put("als","加密方式")
            map.put("typ","JWT")
2.创建负载
    声明加密算法和使用的公钥信息--加盐
        Algorithm algorithm = Algoritem.HMAC265("szr")
    创建token,加入各种信息
        String token = JWT.created().
            //签发人
            withIssur("szr").
            //受众
            withAudience("自定义").
            //主题
            withSubject("szr").
            //签发时间-生成时间-当前时间
            withIssuedAt(new Date()).
            //过期时间-token时效性-不能一直有效-一小时
            withExpiresAt(System.currentTimeMillis() + 1000 * 60 * 60).
            //自定义内容
            withClaim("name","szr").
            //加盐
            sign(algorithm)

解析token

    //根据加盐内容和公钥获取内容
    JWTVerifier szr = JWT.require(algorithm).withIssuer("szr").build();
        DecodedJWT dec = szr.verify("获取到的token");
        String name = dec.getClaim("name").asString();
    //结果为
        name=szr

你可能感兴趣的:(Java学习--四阶段,开发语言,java)