随笔 - 45,  文章 - 0,  评论 - 2,  阅读 - 9004

如何实现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协议
posted on   玉龙龙玉  阅读(160)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

欢迎这位怪蜀黍来到《JWT鉴权如何实现 - 玉龙龙玉 - 博客园》
点击右上角即可分享
微信分享提示