当前位置: 首页 > news >正文

认证授权 - OAuth 2.0

OAuth (Open Authorization)是一个开放标准,用于实现授权机制,允许用户授权第三方应用程序访问他们的资源而不必共享用户名和密码。OAuth 经历了多个版本的迭代和发展,每个版本都有其特定的特点和改进。下面是 OAuth 各个版本的主要区别:

OAuth 1.0

  • 发布时间:2006 年左右开始发展,2010 年 4 月作为 RFC 5849 发布。
  • 主要特点
    • 使用基于加密签名的方法来保护请求。
    • 包含复杂的签名算法,如 HMAC-SHA1。
    • 每个访问令牌都有一个对应的密钥(secret),用于生成签名。
    • 支持长期有效的访问令牌。
    • 适用于基于浏览器和非浏览器的应用。
    • 相对于后续版本较为复杂,安全性方面有一定的缺陷。

OAuth 1.0a

  • 发布时间:2010 年作为 RFC 5849 发布。
  • 主要改进
    • 对 OAuth 1.0 进行了修订,解决了一些安全性和兼容性问题。
    • 包括了对一些漏洞的修复,提高了整体的安全性。

OAuth 2.0

  • 发布时间:2012 年由 IETF 发布为 RFC 6749。
  • 主要特点
    • 不向前兼容 OAuth 1.0。
    • 简化了客户端开发流程。
    • 去掉了签名机制,转而依赖 HTTPS 提供传输层的安全性。
    • 访问令牌不再有对应的密钥(secret)。
    • 引入了刷新令牌(refresh token)的概念,使得访问令牌可以短期有效但可以通过刷新令牌延长使用周期。
    • 支持多种授权模式,包括授权码模式(Authorization Code Grant)、隐式模式(Implicit Grant)、密码模式(Resource Owner Password Credentials Grant)和客户端凭证模式(Client Credentials Grant)等。
    • 更好地支持了非浏览器的应用程序。
    • 访问令牌的有效期较短,增强了安全性。

OAuth 2.1

  • 发布时间:2021 年发布为 RFC 8628。
  • 主要特点
    • 在 OAuth 2.0 的基础上增加了更多的安全性和明确性。
    • 强调了最佳实践和安全性增强。
    • 规定了更严格的错误处理机制。
    • 明确了客户端认证的要求。
    • 提出了对某些字段的使用建议,以减少潜在的混淆和攻击。

总结

  • OAuth 1.0 和 OAuth 1.0a:这些早期版本引入了基于签名的安全机制,但因为其复杂性和维护成本较高,逐渐被后续版本取代。
  • OAuth 2.0:简化了流程,去除了签名机制,转而使用 HTTPS 保证通信安全。这使得开发变得更为简单,同时也增加了刷新令牌的功能,使得安全性和灵活性得到了提升。
  • OAuth 2.1:进一步增强了 OAuth 2.0 的安全性,解决了之前版本中的一些模糊不清的地方,并提供了一些额外的最佳实践指导。

随着时间的推移,OAuth 2.0 成为了广泛接受的标准,而 OAuth 2.1 则进一步加强了这一标准的安全性和规范性。目前,大多数系统都采用 OAuth 2.0 或 OAuth 2.1 实现授权逻辑。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣221题详解:最大正方形的多种解法与模拟面试问答
  • 七牛云 CDN 视频瘦身,为视频分发「减负增效」
  • 路径规划 | 灰狼算法+B样条曲线优化无人机三维路径规划(Matlab)
  • 【C++】深入解析C/C++内存管理:new与delete的使用及原理
  • Leetcode每日刷题之1004.最大连续1的个数|||(C++)
  • CeresPCL 岭回归拟合(曲线拟合)
  • Tomcat的核心文件讲解
  • 【SpringBoot】使用Spring Boot、MyBatis-Plus和MySQL来实现增删改查操作,并添加自定义SQL查询。
  • java整合modbusRTU与modbusTCP
  • BUG——GT911上电后中断一直触发
  • RK3588——网口实时传输视频
  • 什么是深拷贝
  • ubuntu20 vmware硬盘空间不够,进行扩容,实操成功!
  • 通俗易懂 serverless 架构、微服务架构和云原生架构,并简单代码
  • UltraISO制作Centos7.X系统U盘启动
  • 【Linux系统编程】快速查找errno错误码信息
  • 【个人向】《HTTP图解》阅后小结
  • DataBase in Android
  • Date型的使用
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • leetcode98. Validate Binary Search Tree
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis 懒删除(lazy free)简史
  • REST架构的思考
  • Vue.js-Day01
  • Vue组件定义
  • Zsh 开发指南(第十四篇 文件读写)
  • 给github项目添加CI badge
  • 后端_MYSQL
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端路由实现-history
  • 使用docker-compose进行多节点部署
  • 用quicker-worker.js轻松跑一个大数据遍历
  • Java数据解析之JSON
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​​​【收录 Hello 算法】9.4 小结
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • $nextTick的使用场景介绍
  • ( 10 )MySQL中的外键
  • (2022 CVPR) Unbiased Teacher v2
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (52)只出现一次的数字III
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (力扣题库)跳跃游戏II(c++)
  • (转)3D模板阴影原理
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • @Repository 注解
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [000-002-01].数据库调优相关学习