jwt,session,md5,base64,SHA256,RSA/AES

360 阅读3分钟

jwt

JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息。

JWT什么时候去使用,有什么好处

授权: 这是使用JWT的最常见方案。一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由,服务和资源。单点登录是当今广泛使用JWT的一项功能,因为它的开销很小并且可以在不同的域中轻松使用。

信息交换: JSONWeb令牌是在各方之间安全地传输信息的好方法。因为可以对JWT进行签名(例如,使用公钥/私钥对),所以您可以确定发件人是他们所说的人。另外,由于签名是使用标头和有效负载计算的,因此您还可以验证内容是否未被篡改。

支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输.

更适用于移动应用:当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。

CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。(如果token是用cookie保存,CSRF还是需要考虑,一般建议使用1、在HTTP请求中以参数的形式加入一个服务器端产生的token。或者2.放入http请求头中也就是一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中)

基于标准化: 你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持

性能: JWT不仅可用于认证,还可用于信息交换。善用JWT有助于减少服务器请求数据库的次数,请求数据库的一次网络往返时间(通过数据库查询session信息),相对比HMAC SHA256计算Token验证和解析要费时得多

JWT问题

令牌问题: JWT默认不加密,但可以加密。生成原始令牌后,可以使用该令牌再次对其进行加密。

会话状态: JWT的最大缺点是服务器不保存会话状态,所以在使用期间不可能取消令牌或更改令牌的权限。也就是说,一旦JWT签发,在有效期内将会一直有效。

安全问题: JWT本身包含认证信息,因此一旦信息泄露,任何人都可以获得令牌的所有权限。为了减少盗用,JWT的有效期不宜设置太长。对于某些重要操作,用户在使用时应该每次都进行进行身份验证。而且JWT不建议使用HTTP协议来传输代码,为了减少盗用和窃取,而是使用加密的HTTPS协议进行传输。

session, sessionId

后端用于存储用户会话信息的一种机制

参考文章

Java中详细使用JWT(JJWT)

什么是 JWT -- JSON WEB TOKEN 这个主要是看评论

五分钟带你了解啥是JWT