JWT教你如何证明你是我的人!

网站建设3年前发布
19 0 0

哈喽,大家好,我是指北君。是的,我知道你们都是我的人。, 今天带大家来认识一下JWT。,JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于 Json 的开放标准。JWT 的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。,基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,由服务器通过秘钥(serectkey)然后把用户id以及其他信息包装进行一系列的加密算法生成,用户登录的成功,顺带把这个token返回到客户端,用户以后拿着token来访问相关资源,服务器接收到token,通过serectkey然后通过特定算法,解析出这个token中的用户id,解析成功!那么这个人就是该用户,然后通过解析出的id进行该用户的相关操作。这就为应用的扩展提供了便利。,注:这个token必须要在每次请求时传递给服务端,它应该保存在请求头里, 另外,服务端要支持CORS(跨来源资源共享)策略,一般我们在服务端这么做,就可以了Access-Control-Allow-Origin:,第一部分我们称它为头部(header),第二部分我们称其为载荷(payload,类似于飞机上承载的物品),第三部分是签证(signature)。,头部(header),jwt的头部承载两部分信息:,{ "alg":"HS256" } 经过Base64编码之后 ewogICAgImFsZyI6IkhTMjU2Igp9,载荷(payload),载荷就是存放有效信息的地方。这些有效信息包含三个部分,签证(signature),这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。signature顾名思义就是签名,签名一般就是用一些算法生成一个能够认证身份的字符串,secret配置在服务器端,不能泄露出去,就可以自己给自己签发token了。,JWT的使用(JAVA),创建一个新项目,引入jwt包;,JWT工具类:,20230305203144e60369e162be9c89bc640534d3180ca9ec38d0367,访问测试;,20230305203144a3a423d26deada80e19788679e171acc73f1d1311,拿到的token可以使用Base64解码,可以看到,能看到用户信息,所以,token中不要带有敏感信息,防止泄露。,20230305203145e9fb211486d07d25bd7206b8d64d8982dce228236,使用该token调用getUser接口,可以正确解析;,2023030520325191c5c7a72e40fbb7ce2999cdf7a50519ef7687787,下面我们不使用getToken获取token,而是伪造一个token;,20230305203146962a8f093df9eee0513830e721ab6af4ae63bd974,再组合header,payload和signature,得到新的token访问getUser;,得到结果如下:无法正确解析token,说明此token无效最后, JWT过期时间要设置适宜 ,过长,可能会被截取到,造成用户信息泄露安全等问题;过短用户体验不佳。,20230305213610e8dad31734a04930e8a457bb370ad3fc0e5e3e651,20230305203146f10532d2771c21838ff78946cb154d64548d05606,

© 版权声明

相关文章