认证授权

  • HTTP 是无状态的协议,每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪,就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。

  • cookie 存储在客户端: cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。

  • cookie 是不可跨域的: 每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的靠的是 domain)

什么是 Session

  • session 是另一种记录服务器和客户端会话状态的机制

  • session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中

16f523a04d0b3cf5_tplv-t2oaga2asx-zoom-in-crop-mark_3024_0_0_0

什么是 Token(令牌)

Acesss Token

16f523a04d9c745f_tplv-t2oaga2asx-zoom-in-crop-mark_3024_0_0_0

Refresh Token

16f523a04d1c887b_tplv-t2oaga2asx-zoom-in-crop-mark_3024_0_0_0

Token 和 Session 的区别

  • Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。而 Token 是令牌访问资源接口(API)时所需要的资源凭证。Token 使服务端无状态化,不会存储会话信息。

什么是 JWT

JSON Web Token(简称 JWT)是目前最流行的跨域认证解决方案。

客户端将 token 保存到本地(通常使用 localstorage,也可以使用 cookie)

验证网站 https://jwt.io/

image-20220827223204570

16f523a04e881087_tplv-t2oaga2asx-zoom-in-crop-mark_3024_0_0_0

image-20220827223334149

Token 和 JWT 的区别

相同:

  • 都是访问资源的令牌
  • 都可以记录用户的信息
  • 都是使服务端无状态化
  • 都是只有验证成功后,客户端才能访问服务端上受保护的资源

区别:

  • Token:服务端验证客户端发送过来的 Token 时,还==需要查询数据库(一般存在redis中)获取用户信息,然后验证 Token 是否有效==。
  • JWT: 将 Token 和 Payload 加密后存储于客户端,==服务端只需要使用密钥解密进行校验==(校验也是 JWT 自己实现的)即可,不需要查询或者减少查询数据库,因为 JWT 自包含了用户信息和加密的数据。

认证授权
http://example.com/2023/03/09/服务治理/认证授权/
作者
UncleBryan
发布于
2023年3月9日
许可协议