鉴权机制

简介: 鉴权机制

前言

鉴权的机制,分为四种:

  • HTTP Basic Authentication (HTTP基本验证)
  • session-cookie
  • Token 令牌
  • OAuth(开放授权)

HTTP Basic Authentication (HTTP基本验证)

过程解析:

  1. 客户端发送一个http请求,服务端验证用户是否已经登录验证过,如果没有就返回401 Unauthozied 状态码,并在响应首部字段 WWW-Authenticate添加内容
  2. 浏览器在接受到401 Unauthozied后,会弹出登录验证的对话框。用户输入用户名和密码后,  浏览器用BASE64编码后,将认证信息放在请求首部字段Authorization中发送给服务器
  3. 服务器将Authorization中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端
  4. 当request第一次到达服务器时,服务器没有认证的信息,服务器会返回一个401 Unauthozied给客户端。 认证之后将认证信息放在session,以后在session有效期内就不用再认证了。

session-cookie

  1. 用户注册的时候,客户端提交用户名和密码,服务端会存储用户名和密码,为了防止被脱库,密码存储一般会进行加密存储,比如md5、rsa加密等
  2. 注册完成后,用户发起登录,客户端提交用户名和密码,服务端会对用户提交的数据进行校验(用户名就和密码是否正确),若正确服务端会根据用户信息(用户id,用户名,user_agent等)创建一个session,并存储在数据库中(一般是存储在redis中),保存好后,服务端会将这个session通过响应头的Set-cookie字段返回给客户端。
  3. 客户端收到服务器的响应,浏览器会自动将响应头Set-cookie的内容添加到请求头的cookie中(代码实现要手动添加,如果使用其他创建session的方式自动添加),在请求其他接口时会始终携带这个请求头。
  4. 服务端收到客户端发起的请求后,会从请求头中将session提取出来与之前存储在Redis中的session进行对比,如果一致就返回对应的接口数据给客户端,不一致或者是超时则不返回接口数据给客户端

session鉴权的缺点就是服务端存储压力较大,需要大量的存储空间来存储session,因此token鉴权应运而生

Token 令牌

  1. 用户发起登录,客户端提交用户名和密码,服务端会对用户提交的数据进行校验,校验通过以后此时会提取用户的关键信息(比如用户名密码、用户id、时间戳等信息进行排序,然后再进行签名运算)通过特定的算法生成token,然后将这个token放到响应头里面返回给客户端。
  2. 客户端收到响应结果,然后就会从响应结果中获取token(这个步骤是有前端工程师完成),然后将token放到请求头token字段中(通常情况是这个字段,由后端决定),再去请求其他接口
  3. 服务端再次收到客户端请求,此时服务端会去请求头中提取出token,然后对token进行解签,获取到用户关键信息,再去数据库查询是否存在该用户。但凡这个token被修改过,解签就会失败,鉴权就自然失败了。
  4. 服务端鉴权成功就会返回对应接口数据更黑客户端,鉴权失败就不会返回随影数据

OAuth(开放授权)

授权机制OAuth2.0

目前掌握第一种OAuth方式,即授权码方式即可。

总结

目前来说,常用的就是token令牌方式以及授权码方式。

对于普通的鉴权就是用token令牌方式,第三方登录就是常用OAuth授权码方式。


相关文章
|
6月前
sa-token实现网关调用认证服务统一鉴权
sa-token实现网关调用认证服务统一鉴权
361 0
|
存储 JSON 算法
微服务网关鉴权:gateway使用、网关限流使用、用户密码加密、JWT鉴权(二)
微服务网关鉴权:gateway使用、网关限流使用、用户密码加密、JWT鉴权(二)
微服务网关鉴权:gateway使用、网关限流使用、用户密码加密、JWT鉴权(二)
|
4月前
|
存储 监控 安全
通用快照方案问题之JWT认证如何解决
通用快照方案问题之JWT认证如何解决
33 0
|
6月前
|
JSON 安全 Java
|
Nacos
nacis鉴权
nacis鉴权
94 0
|
JSON 算法 中间件
如何实现jwt鉴权机制?
如何实现jwt鉴权机制?
136 0
EMQ
|
存储 安全 算法
MQTT 5.0 中的安全认证机制:增强认证介绍
增强认证是 MQTT 5.0 新引入的认证机制,它允许我们套用各种比密码认证更加安全的身份验证方法,进一步增强系统的安全性。
EMQ
221 0
MQTT 5.0 中的安全认证机制:增强认证介绍
|
存储 JSON 缓存
如何实现jwt鉴权机制之详解
如何实现jwt鉴权机制之详解
|
存储 JSON 缓存
详说JWT鉴权机制
详说JWT鉴权机制
247 0
|
微服务
实战!openFeign如何实现全链路JWT令牌信息不丢失?
实战!openFeign如何实现全链路JWT令牌信息不丢失?