OAuth2图文快速入门

简介: OAuth2基础知识

OAuth2是什么?

OAuth 2.0是应用之间彼此访问数据的授权协议,其最终的目的是为了给第三方应用颁发一个有时效性的令牌access_token,第三方应用根据这个access_token就可以去获取用户的相关资源。

OAuth2应用场景

1、系统间授权

比如我打开王者荣耀,它要求我用微信或者qq登录,我登录到微信,然后微信重定向回王者,此时王者荣耀就可以拿到我在微信的用户数据了。

2、保证微服务安全

3、企业内部应用认证授权

比如单点登录

OAuth2授权流程

OAuth2相关概念

令牌:令牌是OAuth2中的核心组件,它代表了一次授权的结果,表示客户端已经被授予它所请求的权限

客户端:是代表资源拥有者访问受保护资源的软件。简单来说OAuth2授权给谁,谁就是OAuth2的客户端。

资源拥有者:是有权将访问权限授权给客户端的主体。

受保护的资源:是能够通过http服务器进行访问,访问时需要OAuth2下发的令牌(token)。

授权服务器:是一个HTTP服务器,它在OAuth2系统中充当中央组件。授权服务器对资源拥有者和客户端进行身份认证,让资源拥有者向客户端授权、为客户端颁发令牌。

授权范围:表示一组访问受保护资源的权限,它界定了客户端获取的权限范围。

刷新令牌:与访问令牌的不同在于,该令牌不会被发送给受保护资源,它只是为了当访问令牌过期后,客户端不必重新发起授权请求,而是用该令牌向授权服务器请求换取一个新的用于获取受保护资源的访问令牌。

总结

博文到这里可能还是过于抽象,我们从实际生活中举例来更好地理解。

比如小区大门和楼栋有门禁系统,进入需要输入密码或刷卡,我是做电商的,快递员经常需要来取件,如果我把密码告诉快递员他就拥有和我一样的权限了,这样肯定是不好的。如果此时有授权机制,快递员想进来需要得到我的授权,我在家授权后,门禁系统生成一个令牌,快递员得到这个令牌三天或一周之内都可以小区和楼栋。

令牌密码的作用是一样的,都可以进入系统,但是有三点差异。

(1)令牌是短期的,到时间会自动失效,无法修改。密码一般长期有效,我不改它就一直可以用。

(2)令牌可以被撤销,立即失效。以上例而言,我可以随时取消快递员的令牌。密码一般不允许被他人撤销。

(3)令牌有权限范围(scope),比如只能进小区或某个楼栋。密码一般是完整权限。

上面这些设计,保证了令牌既可以让第三方应用获得权限,同时又随时可控,不会危及系统安全。

相关文章
|
2月前
|
Android开发 数据安全/隐私保护 Python
微信抢红包脚本安卓插件,微信xposed抢红包模块, magisk微信抢红包模块
这个代码实现了一个完整的微信抢红包自动化工具,包含红包检测、自动点击、日志记录等功能
|
Java 调度 流计算
有没有 大佬用 springboot 启动flink 处理 ,发现springboot 加 schedule调度处理会内存占满情况?
有没有 大佬用 springboot 启动flink 处理 ,发现springboot 加 schedule调度处理会内存占满情况?
419 6
|
Linux Perl
Centos8 yum源配置方法
本文介绍了Centos8 版本中yum的配置
10698 30
Centos8 yum源配置方法
|
小程序 开发者
【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)
【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)
245 0
|
8月前
|
缓存 Linux 数据库
CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal
通过以上步骤,您可以有效地解决 CentOS 8 中“为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal”问题。关键在于检查网络连接、更新和切换仓库配置、清理缓存、重建 RPM 数据库以及在必要时临时禁用有问题的仓库。通过这些方法,可以确保系统能够正常进行软件包的更新和下载操作。
2412 20
|
10月前
|
C++
vs code常见的查找快捷键大全
【11月更文挑战第1天】本文介绍了 VS Code 中的基本查找和替换操作,包括在当前文件中查找(Ctrl + F)、查找替换(Ctrl + H)、查找下一个(F3)和查找上一个(Shift + F3)。还涵盖了在多个文件中查找(Ctrl + Shift + F)和查找替换(Ctrl + Shift + H),以及符号查找相关操作,如转到符号(Ctrl + T)和在文件中查找符号(Ctrl + Shift + O)。这些快捷键和功能帮助用户高效地管理和编辑代码。
1520 2
|
9月前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
1243 8
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
8月前
|
敏捷开发 运维 Devops
如何构建高效的价值交付系统?详解项目管理中的核心要素
3分钟了解价值交付系统的组成和使用方法。
228 0
如何构建高效的价值交付系统?详解项目管理中的核心要素
|
测试技术 C语言
C语言中的void函数
C语言中的void函数
957 1
|
IDE 程序员 开发工具
IDEA插件-Material Theme UI/IDEA最强主题插件/IDEA图标美化
"Material Theme UI" 是一个用于 JetBrains IDE(如 IntelliJ IDEA、WebStorm、Android Studio 等)的插件,它将原始外观改为 Material Design 风格,并提供丰富的选项来根据个人喜好配置 IDE。
4304 0
IDEA插件-Material Theme UI/IDEA最强主题插件/IDEA图标美化