区分认证、授权、Cookie、Session、Token、JWT、OAuth 2.0

一、区分认证、授权、Cookie、Session、Token、JWT、OAuth 2.0

1.1、认证和授权

通俗理解:

认证:(你是谁)验证身份的凭据(比如用户名、密码),通过这个凭据系统知道你就是你

权限:(你有权干什么)发生在认证之后,掌管访问系统的权限

1.2、什么是Cookie?Cookie的作用?

什么是Cookie:Cookie是某些网站为了辨别用户身份而存储在用户本地上的数据(经过加密),Cookie存放在客户端,一般用来保存用户信息。

1.3、什么是Session?Session和Cookie的区别?

Session的作用:通过服务端记录用户的状态。

注意:Session是存放在服务端(保存在单个JVM中),返回SessionId(在相应头),客户端存放SessionId,下次请求时直接使用对应的SessionId从服务器查询对应Session

怎么解决分布式Session(Session共享问题)——直接使用Token

       Session使用例子:典型应用就是购物车,当你要添加商品到购物车时,系统不知道哪个用户操作的,因为HTTP协议无状态的,服务端给特定用户创建特定的Session之后就可以标识这个用户并且跟踪它了。

Session如何进行身份验证:通过SessionID,SessionID一般会存放在Redis中

       例子:用户成功登陆系统,然后返回给客户端具有SessionID的Cookie,当用户向后端发请求的时候会把SessionID带上,这样后端就知道你的身份状态了。

Session和Cookie的区别:Cookie数据保存在客户端,Session数据保存在服务器端;Session安全性更高。

 

1.4、什么是Token?什么是JWT?

Session保存信息在服务端有一些麻烦,需要保证可用性,并且不适合移动端(依赖Cookie)

Token作用:不需要自己存放Session信息就能实现身份验证的方式,只用在客户端保存服务端给的Token就行了。

什么是JWT:本质就是一段签名的JSON格式的数据,由于它带有签名,所以接受者可以验证它的真实性。

JWT由三部分组成

  • Header:描述JWT元数据,定义了生成签名的算法以及Token类型
  • payLoad(负载):用来存放实际需要传递的数据
  • Signature(签名):服务器通过Payload、Header和一个密钥(serect)使用Header里面指定的签名算法生成

基于Token进行身份验证大概流程

(1)服务器通过Payload、Header、secret(密钥)创建令牌(Token),并将Token发送给客户端;

(2)客户端将Token保存在HTTP Header 的Authorization字段中(也可放在Cookie但是不能跨域)。

详细流程:

——>用户向服务器发送用户名和密码用于登录系统

——>身份验证服务响应并返回签名的JWT(上面包含了用户是谁的内容)

——>用户每次向后端发送请求都在Header中带上JWT

——>服务端检查JWT并从中获取用户相关信息

1.5、什么是OAuth2.0?

是一个行业标准授权协议,主要用来授权第三方应用获取有限的权限,它的最终目标是为第三方应用颁发一个有时效性的令牌token,使得第三方应用能够通过该令牌获取相关资源(比如第三方登录)

发布了52 篇原创文章 · 获赞 116 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/RuiKe1400360107/article/details/103614491