如何实现jwt鉴权机制?

JWT(JSON Web Token),本质就是一个字符串书写规范,作用是用来在用户和服务器之间传递安全可靠的信息

  • 为什么需要token
    在后台管理系统中,我们通常使用cookie-session的方式用于鉴权, jwt实现token鉴权(nodejs koa) 但这种方式存在着以下问题:
    1、比如cookie的容量太小、
    2、浏览器端和app端发送http请求时携带cookie会有差异、
    3、分布式系统和服务器集群保证如何保证sessionId是相同,
    基于以上问题,有了token这种方式,token的鉴权不受浏览器或app端的限制,通用性安全性都更强。

实现token的鉴权方式通常使用jwt,即json web token,jwt的格式如 xxx.yyy.zzz

  • 头部(Header) xxx的部分用来描述使用什么样的加密方式
  • 载荷(Payload) yyy的部分是携带的数据,比如id,name,通常还会携带 iat(issue at)发布时间, exp(expiration time)过期时间,用于鉴权的时候判断此token是否在有效期内,以上xxx和yyy都是对json数据以base64编码的方式进行转换,
  • 签名(Signature)而zzz是对xxx.yyy再加上密钥进行加密,加密的方式在header中。

在目前前后端分离的开发过程中,使用token鉴权机制用于身份验证是最常见的方案,流程如下:

  • 服务器当验证用户账号和密码正确的时候,给用户颁发一个令牌,这个令牌作为后续用户访问一些接口的凭证
  • 后续访问会根据这个令牌判断用户时候有权限进行访问

如何实现JWT鉴权(总结)

Token的使用分成了两部分:

  • 生成token:登录成功的时候,颁发token
  • 验证token:访问某些资源或者接口时,验证token

使用JWT鉴权的优缺点

优点:

  • json具有通用性,所以可以跨语言
  • 组成简单,字节占用小,便于传输
  • 服务端无需保存会话信息,很容易进行水平扩展
  • 一处生成,多处使用,可以在分布式系统中,解决单点登录问题
  • 可防护CSRF攻击
    缺点:
  • payload部分仅仅是进行简单编码,所以只能用于存储逻辑必需的非敏感信息
  • 需要保护好加密密钥,一旦泄露后果不堪设想
  • 为避免token被劫持,最好使用https协议

原文地址:http://www.cnblogs.com/maxiaohu/p/16823289.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性