Go+Vue前后端分离结构JWT身份认证的安全设计思路

说明

在现代Web开发中,前后端分离架构已经成为主流。前后端分离后用户身份验证中JWT 是前后端分离架构中用户认证与权限管理的主流方案。

JWT优点本文就不讲了,它能成为主流说明有优点是很明显的,今天分析一下我使用jwt过程中对他缺点(在特定需求总的缺点)和不断改进符合要求的改造。

安全性演化

1.无状态(无法销毁)和生成加密字符串过长

针对这个无状态无法销毁的问题,可以使用内存或redis存储数据,记录token状态。同时可以使用新key标识加密作为存储key-value 价值对的key,然后token最为值存储在内存或redis中。返回前端的数据为key,这样即可记录状态有可以返回短加密数据。

2.JWT 有效期问题

为了token安全生产的token是要设置有效期的,有了失效,那么它是存在过期情况,也就是当用户操作时候token过期就好终止操作,这种打断用户使用状况,在实际非常不好。这时可以采用无感刷新设计,即设计一个过期前时间提交更新token并返回新的token替换,这种返回新的token需要前端替换,相对麻烦。从上面用新加密的key做存储的key,并把key返回前端(而不是token),这样的话,只需在后端把刷新的token替换掉,前端原来的key就无需跟新,返回旧的key获取新的token解析即可。

3.长久不变的key(token)会被劫持

由于JWT 有效期较长以及上面无感刷新 ,一旦泄露,风险将持续存在。为了解决这个问题可以采用动态token,也就是传输的token是变化的,可以一秒变化一次,并且每一个token设置短期失效。这样即使token泄露也无法正常使用,确保了系统数据安全。如果数据安全系数要求高,可以一次请求对应一个token,而且一个token只能使用一次。这样就可以做到安全token身份验证了。

好了以上我们实际开发中不断完善token机制,我们还继续完善。如果感兴趣可以到社区https://goflys.cn/goframepro 体验。或者有新token验证问题可以在社区留言或提问,我们一同完善。

相关推荐
ttwuai4 天前
XYGo Admin 后端分层架构:Controller→Service→Logic→DAO 实战解析
架构·goframe·后台框架
呆萌很7 天前
【Gin】文件上传下载(单文件 + 多文件)
gin
先跑起来再说9 天前
Go 排行榜系统的工程化实现:分布式锁、快照表与定时刷新
分布式·go·gin
必胜刻11 天前
一个异步生成游戏功能的落地复盘:Redis Stream + WebSocket + 状态补偿
redis·websocket·golang·gin·状态补偿
TE-茶叶蛋12 天前
B-tree vs GIN Trigram vs HNSW
gin
曾几何时`14 天前
Go(一)Gin框架 和 GORM机制
开发语言·golang·gin
老毛肚15 天前
Gin + GORM 接口可视化测试
gin
lolo大魔王15 天前
Gin 框架中间件超详细实战教程(原理、全局中间件、路由中间件、自定义中间件、跨域、日志拦截)
中间件·gin
lolo大魔王15 天前
Gin 框架响应格式与 HTML 模板渲染完整实战教程
前端·html·gin
必胜刻24 天前
Go 调用Coze工作流实现 AI 游戏生成
开发语言·ai·golang·gin