开发者学堂课程【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它的作用就是用户授权,让一个系统可以直接访问另外一个系统。有人会认为这有点像单点登录,它不是单点登录。我们来画一张图,说明一下他们的区别到底是什么。
首先要有用户,就是每个人。接下来有一个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系统,就省去用户下载照片的功夫。这不是单点登录,它比单点登录要更进一步,要更强大一步。