OAuth2.0介绍|学习笔记

简介: 快速学习 OAuth2.0介绍

开发者学堂课程【Spring Security知识精讲与实战演示(四)OAuth2.0介绍】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/733/detail/13076


OAuth2.0介绍

 

了解什么是OAuth,要明白它并不是一种技术,它只是一套协议,它的全称是open authorization,第一版叫OAuth,第二版是OAuth2.0。可能会以为OAuth2.0就是OAuth的一个升级版,其实不是,它已经将OAuth1.0彻底废弃,它是一套全新的协议。用一句话描述,OAuth2.0它的作用就是用户授权,让一个系统可以直接访问另外一个系统。有人会认为这有点像单点登录,它不是单点登录。我们来画一张图,说明一下他们的区别到底是什么。

 image.png

首先要有用户,就是每个人。接下来有一个a系统和一个b系统,可以在框里面写,a系统和b系统。不管是a系统,还是b系统都有自己的客户端和服务器。就可以认为这就是a系统的客户端,是它的服务器,同上面一样,这边是它的客户端,下面是它的服务器。先说单点登录,什么是单点登录?已经做过了一个单点登录,单点登录就是a用户登录了a系统, a用户在访问b系统时就无需再重新登录,直接可以访问。在a系统中,只要用户登录成功,a系统会返回一个token给用户。在b系统中登录操作只需要验证token是否合法就可以,这个是单点登录,要注意OAuth2.0不是做单点登录,它的主要功能是干什么?举个例子,假如a系统是打印照片的一个软件,b系统是存储照片的一个软件,如此,用户想用a系统打印b系统里面存储的照片,有两套方案,第一套方案:首先登录b系统,把b系统上存储的照片下载下来,拿到a系统中去打印,这是第一个选择,第一个选择要求用户必须具有a系统的登录权限,也必须有b系统的登录权限,换句话说,就是要有两个系统的使用权限。否则就不能用,就等于空谈,这是第一个方案。

第二个方案:让用户用系统打印照片,让a系统去b系统中拿用户想让它打印的照片,这样做,用户体验要好很多,之前的用户体验用户做的操作太多,先下载照片,再打印照片,但是现在这一套方案只需要操作a系统,不用再去b系统手动照片。所以会更倾向用第二套方案。

但是要做一个事情,第二套方案涉及到的问题是什么?用户要让a系统直接去操作b系统,而不是用户操作a,b系统。要注意用户操作a系统,用户操作b系统,叫单点登录,但是现在让用户操作a,通过a去操作b系统。用户不用直接操作b系统,这叫OAuth2.0。

用文字方式描述清楚:假设a网站是一个打印照片的网站,b网站是一个存储照片的网站,二者本来是毫无关联的两个网站。如果想让a网站打印自己存在b网站的照片,那么a就需要使用b照片的资源才可以,俩都需要登录,登录完之后,拿着b网站下的照片自己去a上去打印就好,这种太麻烦。希望a可以直接操作b,希望a系统可以直接操作b系统,就省去用户下载照片的功夫。这不是单点登录,它比单点登录要更进一步,要更强大一步。

相关文章
|
存储 Java 测试技术
阿里巴巴java开发手册
这篇文章是关于阿里巴巴Java开发手册的整理,内容包括编程规约、异常日志、单元测试、安全规约、MySQL数据库使用以及工程结构等方面的详细规范和建议,旨在帮助开发者编写更加规范、高效和安全的代码。
|
SQL 关系型数据库 API
SqlAlchemy 2.0 中文文档(七十二)(1)
SqlAlchemy 2.0 中文文档(七十二)
213 0
|
缓存 安全 开发工具
一个很好用的Flutter SDK版本管理神器fvm
一个很好用的Flutter SDK版本管理神器fvm
一个很好用的Flutter SDK版本管理神器fvm
|
数据采集 Java Web App开发
爬取王者荣耀皮肤图片
用爬虫相关知识,进行爬取王者荣耀皮肤图片。
1353 1
|
索引 Python
Pandas 2.2 中文官方教程和指南(九·三)(1)
Pandas 2.2 中文官方教程和指南(九·三)
89 0
|
资源调度 JavaScript 前端开发
vue3+ts项目搭建和封装(上篇)
vue3+ts项目搭建和封装(上篇)
|
Web App开发 Java 测试技术
反了!居然让我教她自动化测试!
反了!居然让我教她自动化测试!
|
前端开发
前端工作总结207-get之前打印
前端工作总结207-get之前打印
108 0
前端工作总结207-get之前打印
|
存储 安全 Oracle
如何轻松给Spring Boot配置文件加个密?
如何轻松给Spring Boot配置文件加个密?
390 0