JWT 概念以及Cookie+Session解决的问题
2017-07-19 14:44
113 查看
什么是JTW?
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
JWT构成?
第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature)
Cookie和Session解决的问题?
http协议是无状态的,通过cookie和session,相当于全局变量,,cookie保存在客户端,session保存在服务器。原理就是在用户登录通过验证后,服务端将数据加密后保存到客户端浏览器的Cookie中,同时服务器保留相对应的Session(文件或DB)。用户之后发起的请求都会携带Cookie信息,服务端需要根据Cookie寻回对应的Session,从而完成验证,确认这是之前登陆过的用户
JWT和Cookie/Session的比较
JWT可以省去服务端读取Session的步骤,这样更符合RESTful的规范。但是对于客户端(或App端)来说,为了保存用户
授权信息,仍然需要通过Cookie或类似的机制进行本地保存。因此JWT是用来取代服务端的Session而非客户端Cookie的方案,当然
对于客户端本地存储,HTML5提供了Cookie之外更多的解决方案(localStorage/sessionStorage),究竟采用哪种存储方式,其实从
Js操作上来看没有本质上的差异,不同的选择更多是出于安全性的考虑。
链接:http://www.jianshu.com/p/576dbf44b2ae
链接:http://blog.rainy.im/2015/06/10/react-jwt-pretty-good-practice/
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
JWT构成?
第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature)
// 1. Headers // 包括类别(typ)、加密算法(alg); { "alg": "HS256", "typ": "JWT" } // 2. Claims // 包括需要传递的用户信息; { "sub": "1234567890", "name": "John Doe", "admin": true } // 3. Signature // 根据alg算法与私有秘钥进行加密得到的签名字串; // 这一段是最重要的敏感信息,只能在服务端解密; HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), SECREATE_KEY )
Cookie和Session解决的问题?
http协议是无状态的,通过cookie和session,相当于全局变量,,cookie保存在客户端,session保存在服务器。原理就是在用户登录通过验证后,服务端将数据加密后保存到客户端浏览器的Cookie中,同时服务器保留相对应的Session(文件或DB)。用户之后发起的请求都会携带Cookie信息,服务端需要根据Cookie寻回对应的Session,从而完成验证,确认这是之前登陆过的用户
JWT和Cookie/Session的比较
JWT可以省去服务端读取Session的步骤,这样更符合RESTful的规范。但是对于客户端(或App端)来说,为了保存用户
授权信息,仍然需要通过Cookie或类似的机制进行本地保存。因此JWT是用来取代服务端的Session而非客户端Cookie的方案,当然
对于客户端本地存储,HTML5提供了Cookie之外更多的解决方案(localStorage/sessionStorage),究竟采用哪种存储方式,其实从
Js操作上来看没有本质上的差异,不同的选择更多是出于安全性的考虑。
链接:http://www.jianshu.com/p/576dbf44b2ae
链接:http://blog.rainy.im/2015/06/10/react-jwt-pretty-good-practice/
相关文章推荐
- JWT 概念以及Cookie+Session解决的问题
- spring boot--整合spring session实现session共享以及cookie丢失问题解决
- Uploadify配置记录以及上传Session丢失问题解决java版
- Cookie,Session解决用户的会话跟踪问题
- ajax跨域,cookie,session失效的问题解决办法
- 分布式系统登录功能拦截器的实现以及cookie的共享问题(利用cookie实现session在分布式系统的共享)
- 解决访问不同的站点iframe应用session丢失(cookie丢失的问题)的问题
- 解决vue跨域请求无法携带cookie,进而无法在服务器端设置session保持数据(状态)的问题
- SpringMVC解决跨域问题,以及跨服务器调用时候session丢失的问题总结!!!
- Ubuntu12.04 'Failed to load session "ubuntu"'问题的解决以及后续
- Warning Cannot send session cookie - headers already sent...问题的解决(PHP的UTF-8 BOM引起的问题) ->转
- java中使用Cookie替代Session解决跨域Session失效问题
- session+application+cookie 实现单态登陆,且解决浏览器意外关闭的问题(转自http://blog.csdn.net/u010723709/article/details/4)
- 出现org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed问题以及解决办法
- 抛开Cookie使用SESSION-PHP中SESSION不能跨页传递问题的解决办法(转载)
- IE的cookie机制导致的session问题及解决办法
- 抛开cookie使用session-PHP中SESSION不能跨页传递问题的解决办法
- SpringMVC解决跨域问题,以及跨服务器调用时候session丢失的问题总结!!!
- 关于禁用Cookie的问题以及解决办法
- Spring通过注释标签解决Ajax跨域访问以及Session失效的问题