用户登录 JWT原理剖析 JWT与单点登录实例解释

JWT(JSON Web Token)是一种用户授权机制,用于无状态登录,减轻服务器负担并支持分布式部署。JWT包含头部、负载和签名三部分,通过非对称加密确保安全性。在单点登录场景下,JWT使得不同系统间轻松共享用户状态,简化了认证流程。但JWT的不可撤销性和负载部分的明文传递也是其潜在风险。

1. JWT原理剖析

说起用户的登录系统,估计少侠们早就听说过JWT,
那么什么是JWT呢?
为什么应该使用JWT呢?
JWT与Session又有什么关系呢?

我会在下文中详细回答这些问题,在深入学习JWT工作原理之前,我们先来学习一下JWT是干什么用的。

JWT全称JSON Web Token,它的作用是用户授权Authorization,而不是用户的身份认证Authentication,
授权Authorization与认证Authentication在英文上看上去很相似,但是它们却是完全不一样的概念,含义差了十万八千里。

用户认证指的是使用用户名和密码来验证当前的用户身份,简单来说就是用户登录,而用户授权则指用户登录以后,当前用户是否有足够的权限访问特定的资源。

少侠们可以回忆一下,当用户登录失败的时候,返回的错误码应该是401_Unauthorized,未授权,
而当一个用户没有权限读取某一个资源的时候,返回的错误码应该是403_forbidden。

传统上,我们会使用服务器的Session来判断当前用户是否登录,用户登录以后服务器会创建一个用户登录的Session信息,并把Session保存起来,然后把Session的ID通过Cookie传给前端。

当这个用户需要访问某一个API的时候,Session的ID就会被包含在HTTP请求中一起发给后端,后端通过Session ID来判断用户是否已经登录,然后通过用户的权限来判断是否可以给用户提供响应的资源。

因为在服务器中需要保存用户的Session,所以我们称这种登录模式为有状态登录,
但是JWT的出现彻底改变了用户的认证与授权过程,使用JWT来替换浏览器的Cookie,
因为JWT只负责处理授权,所以JWT信息(Token)只需要保存在客户端,而不需要保存在服务器上,从而就可以实现无状态登录,
因为从本质上来说,JWT跟登录根本就没有关系。

接下来,我们快速了解一下使用Session的有状态登录与使用JWT的无状态登录有什么不一样?

传统上我们会使用Session和Cookie来保持用户的授权信息。
第一步登录过程,
用户使用用户名和密码来登录系统,
服务器会来验证用户名和密码是否正确。
如果正确,服务器会给这个用户创建一个包含用户登录信息角色权限的一个叫做Session的东西,然后把这个Session保存起来,同时把Session ID以Cookie的形式发送给前端,表示用户验证成功登录完成了。

接下来,如果用户希望访问某些资源,前端要向后端发起一个HTTP的请求,同时相应的Cookie也会跟随着请求一起发送给服务器,
而服务器取得Cookie以后,就会去查找是否有Session ID,
然后通过Session ID提取相应的Session来确定用户的身份与权限,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码写注释

请赞赏我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值