首页 » 网站建设 » phpjwttoken例子技巧_浅谈JWT Token机制

phpjwttoken例子技巧_浅谈JWT Token机制

访客 2024-12-09 0

扫一扫用手机浏览

文章目录 [+]

Token和session的差异

跨域问题:token没有跨域问题,session有跨域问题;随意马虎扩展:token不储存于做事器中,适用于做事器的分布式运用;CSRF:不依赖与cookie,不会受到跨站要求假造的攻击;性能:相对付session,少了一次sessionid的打算;

以上是

JWT Token(JSON WEB TOKEN)

phpjwttoken例子技巧_浅谈JWT Token机制

JWT的头部紧张由两部分信息组成:

phpjwttoken例子技巧_浅谈JWT Token机制
(图片来自网络侵删)
声明类型,这里上jwt声明加密算法,如:HMAC、SHA256、HS256

下边的json,便是一个完全的头部信息:

{\"大众typ\公众: \公众JWT\"大众,\"大众alg\"大众: \"大众HS256\公众}

我们将这个头部信息利用base64加密,就得到了我们JWT的第一部分信息了:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

载荷(payload)

紧张有三部分组成:标准中注册的声明、公共的声明、私有的声明。

标准中注册的声明:

iss:jwt签发者sub:jwt所面向的用户aud:吸收jwt的一方exp:jwt的过期韶光,这个过期韶光必须大于签发韶光nbf:定义在什么韶光之前,该token都是不可用的iat:jwt的签发韶光jti:jwt的唯一身份标识,避免重复

自定义的声明

用户自己添加的一些信息,比如用户姓名、手机号等一些不敏感信息。

我们来看看一个完全的载荷(payload)的json数据:

{ \"大众iss\公众: 'jwt' \"大众sub\"大众: \"大众13011912019\"大众, \公众exp\公众: \公众1530000000\"大众, \"大众iat\公众: \"大众1529000000\"大众, \公众jti\公众: \公众638069ab7a97771edcb91180f491d01e\"大众, \公众nickname\公众: \公众kafei\"大众, \"大众avatar\公众: \"大众http://oy98jbaeo.bkt.clouddn.com/avatar-1532401501\"大众}

我们连续将这个载荷(payload)信息利用base64加密,就得到了我们JWT的第二部分信息了:

eyJpc3MiOiJqd3QiLCJzdWIiOiIxMzAxMTkxMjAxOSIsImV4cCI6IjE1MzAwMDAwMDAiLCJpYXQiOiIxNTI5MDAwMDAwIiwianRpIjoiNjM4MDY5YWI3YTk3NzcxZWRjYjkxMTgwZjQ5MWQwMWUiLCJuaWNrbmFtZSI6ImthZmVpIiwiYXZhdGFyIjoiaHR0cDovL295OThqYmFlby5ia3QuY2xvdWRkbi5jb20vYXZhdGFyLTE1MzI0MDE1MDEifQ

签证(sign)

前边我们已经获取到了头部信息的base64和载荷的base64的信息了,现在我们须要用这两个信息,天生一个签证(sign),这便是我们须要的第三部分信息了:

<?php$header = '{\公众typ\公众: \公众JWT\公众,\"大众alg\"大众: \"大众HS256\公众}';$payload= '{\公众iss\公众: \"大众jwt\"大众,\"大众sub\公众: \公众13011912019\"大众,\公众exp\公众: \"大众1530000000\公众,\"大众iat\"大众: \"大众1529000000\公众,\"大众jti\"大众: \公众638069ab7a97771edcb91180f491d01e\公众,\"大众nickname\公众: \"大众kafei\"大众,\"大众avatar\"大众: \"大众http://oy98jbaeo.bkt.clouddn.com/avatar-1532401501\公众}';// 利用.拼接,header在前,payload在后$encodedString = base64UrlEncode($header) . '.' . base64UrlEncode($payload);// 私密字符$salt = 'kafei';// 署名$sign= HS256($encodedString . $salt); // 这里利用随机一段字符代替 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9// 把稳,PHP

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqd3QiLCJzdWIiOiIxMzAxMTkxMjAxOSIsImV4cCI6IjE1MzAwMDAwMDAiLCJpYXQiOiIxNTI5MDAwMDAwIiwianRpIjoiNjM4MDY5YWI3YTk3NzcxZWRjYjkxMTgwZjQ5MWQwMWUiLCJuaWNrbmFtZSI6ImthZmVpIiwiYXZhdGFyIjoiaHR0cDovL295OThqYmFlby5ia3QuY2xvdWRkbi5jb20vYXZhdGFyLTE1MzI0MDE1MDEifQ.eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

前端要求

将token放入到header里边的Authorization中,作为验证,如:

fetch('api/user/1', { headers: { 'Authorization': 'Bearer ' + token }})

优点

不须要储存在做事器的session中,更随意马虎扩展做事器由于用户信息可以放入token中,以是可以少了一次数据库 / 缓存的查询操作,有更好的性能不须要预防CSRF的攻击

不敷

token一经透露或者被盗取,将会暴露该用户

建议

设置token的过期韶光,不宜过长非常主要的操作,须要手机验证码,支付密码等二次验证作为保险只管即便利用 https

转载地址:https://zhuanlan.zhihu.com/p/43094841

标签:

相关文章

外包IT男,新时代的职业转型之路

在互联网高速发展的今天,信息技术(IT)行业已成为推动我国经济增长的重要力量。随着市场竞争的加剧,IT行业的人才需求也在不断变化。...

网站建设 2024-12-15 阅读0 评论0

地砖特性介绍,走进品质生活的新选择

地砖作为家居装饰的重要材料,其质量直接影响到我们的生活品质。近年来,随着科技的进步和人们生活水平的提高,地砖的种类和特性日益丰富。...

网站建设 2024-12-15 阅读0 评论0

大龄男IT从业者的职业发展与人生规划

随着我国经济的快速发展和科技的日益进步,IT行业成为了最具活力和发展潜力的行业之一。在这个充满竞争和变革的时代,大龄男IT从业者面...

网站建设 2024-12-15 阅读0 评论0

大IT集团,引领行业创新,构建数字未来

在数字化时代,信息技术(IT)已经成为推动社会进步的重要力量。大IT集团,作为我国IT行业的领军企业,凭借其强大的技术创新能力和市...

网站建设 2024-12-15 阅读0 评论0