鉴权机制

简介: 鉴权机制

前言

鉴权的机制,分为四种:

  • 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授权码方式。


相关文章
|
存储 机器学习/深度学习 人工智能
本地部署开源大模型的完整教程:LangChain + Streamlit+ Llama
在过去的几个月里,大型语言模型(llm)获得了极大的关注,这些模型创造了令人兴奋的前景,特别是对于从事聊天机器人、个人助理和内容创作的开发人员。
8827 1
|
Oracle Java 关系型数据库
Java8及新版本许可证及收费?
问题:许可类型及如何收费? JDK 8 Oracle 将继续提供JDK 8 免费的公共更新和自动更新,支持个人用户到 2020 年 12 月底,支持商业用户到 2019 年 1 月;换句话说如果想 Oracle 后续继续为你提供 JDK 8 的支持,那么则需要付费。
4403 0
个人网站备案改为企业备案
个人网站备案改为企业备案
730 1
|
机器学习/深度学习 算法 固态存储
基于深度学习的裂缝检测技术
表面裂缝检测是监测混凝土结构健康的一项重要任务。如果裂纹发展并继续扩展,它们会减少有效承载表面积,并且随着时间的推移会导致结构失效。裂纹检测的人工过程费时费力,且受检验人员主观判断的影响。在高层建筑和桥梁的情况下,手动检查也可能难以执行。
1622 0
基于深度学习的裂缝检测技术
|
9月前
|
机器学习/深度学习 人工智能 监控
ModelScope
ModelScope
287 9
|
并行计算 安全 PyTorch
win10安装pytorch
win10安装pytorch
503 0
win10安装pytorch
|
机器学习/深度学习 运维 监控
阿里云IoT发布工业设备故障诊断算法 获IEEE会议收录
刷新工业振动设备故障诊断精准度,显著提升设备运维效率
661 0
|
9月前
|
Web App开发 编解码 前端开发
webgl canvas系列——快速加背景、抠图、加水印并下载图片
webgl canvas系列——快速加背景、抠图、加水印并下载图片
315 8
webgl canvas系列——快速加背景、抠图、加水印并下载图片
|
7月前
|
IDE 程序员 开发工具
IDEA插件-IKun Progress 坤坤成IDEA进度条了
"IKun Progress"是一款适用于JetBrains IntelliJ IDEA等IDE的插件,该插件能够将标准的进度条替换为一个有趣且独特的篮球动画,其中的角色名为坤坤(Kun Kun)。它旨在为您的IDE使用过程增添一些娱乐和轻松的氛围。 该插件让您可以在执行IDE中的任务时享受到更加视觉上吸引人的进度指示器,例如构建、运行测试或其他涉及进度条的操作。相比传统的普通进度条,您将看到坤坤在打篮球,给您的开发工作流程增添了一份乐趣。
1068 0
IDEA插件-IKun Progress 坤坤成IDEA进度条了

热门文章

最新文章