2019-08-14

2019-08-14_第1张图片
今天所了解的内容是JJWt验证java库  2019-08-14  天气 晴空万里

              什么是JJWT



JJWT是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License,版本2.0),JJWT很容易使用和理解。它被设计成一个以建筑为中心的流畅界 面,隐藏了它的大部分复杂性。


jwt的组成

Header: 标题包含了令牌的元数据,并且在最小包含签名和/或加密算法的类型

Claims: Claims包含您想要签署的任何信息

JSON Web Signature (JWS):  在header中指定的使用该算法的数字签名和声明

###jwt的框架:JJWT

    JJWT的目标是最容易使用和理解用于在JVM上创建和验证JSON Web令牌(JWTs)的库。

    JJWT是基于JWT、JWS、JWE、JWK和JWA RFC规范的Java实现。

    JJWT还添加了一些不属于规范的便利扩展,比如JWT压缩和索赔强制。

---------------------


2019-08-14_第2张图片

其实就是一个字符串:由三部分组成,头部、载荷与签名。

头部:(header)

一般放一些声明信息,比如:用什么加密,用什么编码。

头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。

这也可以被表示成一个JSON对象:

        {"typ":"JWT","alg":"HS256"}

使用base64进行编码之后:(至于为什么要用base64,这个我也不知道,好像jwt默认就是用base64编码的)

        eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

载荷(playload)

这里面放的是主要的有用的信息;

比如说:登陆的用户名,登录时间,登录的过期时间,

还可以放一些自己自定义的一些信息,不限制。

一般载荷这块个性化比较多。

载荷就是存放有效信息的地方,这些有效信息包含三个部分:

(1)标准中注册的声明(建议但不强制使用)

                    iss: jwt签发者

                    sub: jwt所面向的用户    //这个以后就是放我们登录的用户名

                    aud: 接收jwt的一方

                    exp: jwt的过期时间,这个过期时间必须要大于签发时间    //过期时间也可以放

                    nbf: 定义在什么时间之前,该jwt都是不可用的.

                    iat: jwt的签发时间

                  jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击

(2)公共的声明

            公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.

          但不建议添加敏感信息,因为该部分在客户端可解密。

---------------------

(3)私有的声明

           私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,

           因为base64是对称解密的,意味着该部分信息可以归类为明文信息。

           这个指的就是自定义的claim。


2019-08-14_第3张图片

签名(signature)

就是把头部和载荷加到一起,进行加密(加密之前先加个盐进去)

jwt的第三部分是一个签证信息,这个签证信息由三部分组成:

            header (base64后的)

            payload (base64后的)

            secret (盐)

这个部分需要base64加密后的header和base64加密后的payload使用。

连接组成的字符串,

然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

---------------------














首先说一下什么是JWT?

其实就是一个字符串:由三部分组成,头部、载荷与签名。

头部:(header)

一般放一些声明信息,比如:用什么加密,用什么编码。

头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。

这也可以被表示成一个JSON对象:

        {"typ":"JWT","alg":"HS256"}

使用base64进行编码之后:(至于为什么要用base64,这个我也不知道,好像jwt默认就是用base64编码的)

        eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

载荷(playload)

这里面放的是主要的有用的信息;

比如说:登陆的用户名,登录时间,登录的过期时间,

还可以放一些自己自定义的一些信息,不限制。

一般载荷这块个性化比较多。

载荷就是存放有效信息的地方,这些有效信息包含三个部分:

(1)标准中注册的声明(建议但不强制使用)

                    iss: jwt签发者

                    sub: jwt所面向的用户    //这个以后就是放我们登录的用户名

                    aud: 接收jwt的一方

                    exp: jwt的过期时间,这个过期时间必须要大于签发时间    //过期时间也可以放

                    nbf: 定义在什么时间之前,该jwt都是不可用的.

                    iat: jwt的签发时间

                  jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击

(2)公共的声明

            公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.

          但不建议添加敏感信息,因为该部分在客户端可解密。

---------------------

版权声明:本文为CSDN博主「我在写bug没事别打扰我」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u010953880/article/details/86735797首先说一下什么是JWT?

其实就是一个字符串:由三部分组成,头部、载荷与签名。

头部:(header)

一般放一些声明信息,比如:用什么加密,用什么编码。

头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。

这也可以被表示成一个JSON对象:

        {"typ":"JWT","alg":"HS256"}

使用base64进行编码之后:(至于为什么要用base64,这个我也不知道,好像jwt默认就是用base64编码的)

        eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

载荷(playload)

这里面放的是主要的有用的信息;

比如说:登陆的用户名,登录时间,登录的过期时间,

还可以放一些自己自定义的一些信息,不限制。

一般载荷这块个性化比较多。

载荷就是存放有效信息的地方,这些有效信息包含三个部分:

(1)标准中注册的声明(建议但不强制使用)

                    iss: jwt签发者

                    sub: jwt所面向的用户    //这个以后就是放我们登录的用户名

                    aud: 接收jwt的一方

                    exp: jwt的过期时间,这个过期时间必须要大于签发时间    //过期时间也可以放

                    nbf: 定义在什么时间之前,该jwt都是不可用的.

                    iat: jwt的签发时间

                  jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击

(2)公共的声明

            公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.

          但不建议添加敏感信息,因为该部分在客户端可解密。

---------------------

版权声明:本文为CSDN博主「我在写bug没事别打扰我」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u010953880/article/details/86735797

你可能感兴趣的:(2019-08-14)