00:01
各位同学大家好,欢迎继续收看上硅谷视频课程,咱们继续来开发上一通项,刚才呢,咱们是完成了手机号进行登录功能,那咱们下面呢带着各位来完成微信扫码登录,在完成微信扫码登录之前,我们先学习一个理论知识,这个理论知识呢,它叫做o two。因为咱们做的微信登录就是基于o two进行实现的,所以给各位现在介绍这个理论知识,然后咱们再来实现微信登录,那auto two到底是什么呢?下面给各位详细来说一下,我在里边给大家来写一下。第一个各位明确啊,O o to是什么呢?它是一种啊,就是针对一些。特定问题的一种解决方案,这个时候字图一个总体描述就是它能解决一些特定问题,用这种方案可以解决掉,那它主要能解决哪些问题呢?给各位说一下,它解决问题有很多,但是主要我们用于两大问题,我这里边列出来,首先第一大问题它能解决,这个叫做开放系统间的这个授权问题。
01:24
这是第一个,然后第二个能解决什么,就是咱通俗说那个单点登录的问题,这是out to解决到两问题,那两问题是什么,包括怎么解决,下面给各位来具体说一下。首先我们先在第一个问题叫做开放系统间的授权问题,那什么叫开放系统间的授权问题呢?大家看一下我的课件中有一张图,这张图中呢,就是我要举的这么一个例子,那这图到底什么意子,我们先看一遍,然后给大家详细说一下,包括在说明auto two是怎么解决的。
02:02
可以看到啊,比如现在我有一个人,这个人呢有自己这个照片或者相片,然后现在呢,我想把这照片呢,存到咱们这个云存储服务中去,比如我现在申请一个百度网盘,我在我的百度网盘中上传我的照片,那比如说现在呢,在网络中一个服务,这个服务比如叫云冲印服务,当然各位知道啊,这云冲印服务比如说是一个第三方的服务,那你想一下云冲印服务能去直接访问我的百度网盘吗?能访问到,是不是肯定访问不了我的百度网盘,理论上是不是能由我自己访问,别人肯定不能访问,而我现在云冲虎要去打印我的照片,那怎么做?咱是不是给他做个授权,要授权它能访问我的百度云盘,然后把里面照片进行打印,所以这个授权过程奥two就能解决,这就叫开放系统间的授权问题,那这问题我在图上给大家再画一下。
03:07
比如现在我这里边有一个人啊,假如说这个人呢,我们就叫这个Lucy。Lucy呢,他现在有自己的这个。照片,比如他拍了很多的这种艺术照,他这里有很多照片,然后这个Lucy呢,比如他把自己的照片呢,存到这个云存储服务中去。比如咱们具体说是那个,比如百度网盘等等云存储服务,在里边存了他的照片,比如现在在网络上还有一个应用,这个应用呢叫做一个打印物。我这里写一下,它叫打印,比如现在啊,这个Lucy想让这个打印符去打印它的百度网盘里边的照片,各位注意,在默认情况下,这个云打印服务是不是肯定不能去访问Lucy的百度网盘,是不是肯定返回到,因为Lucy的百度网盘是不是只能Lucy才可以访问,因为这是他自己私有的东西,而现在我想要让打印户去访问法的网盘,Lucy给他是不是要做一个授权操作呀,当他授权之后,让他是不是能访问呀,比如指定他能访问某文件夹,去访问某个照片,然后进行打印,而这个授权过程奥two就能够解决,这就是他解决的第一个问题,叫做开放酒店授权,就是你的打印服务要去访问你的百度网盘,默认访不到,而给打印服务做个授权,是不是它就能进行访问?
04:40
这个就是第一个问题的描述,那这授权该怎么做呢?大家看下我的课件中啊,我的课件中呢,给各位列出了三种授权方式,这三种授权方式中的第三种就是auto two的这种方案,那咱们来看一下三种方式有哪些,或者各位同学可以想下,我们现在怎么给他授权能做到啊,就是这里边这张图资源用者就如C照片,客户应用就是打印受保护资源就是百度网盘中的照片,而现在客户应用要去访问百度网中内容资源应用者给客户应用是不要做一个授权操作呀,那怎么授权呢?大家也可以帮我来想一下,你说这过程该怎么做?
05:25
各位去考虑一下啊,首先我们看啊,第一种方式最简单,大家想一下Lucy是怎么访问他的百度网盘的,是不是还有用户名和密码呀,就是第一种方式呢,Lucy把他的用密码给这个打印服务,那打印服务拿着他的用户名和密码是不能访问,比如咱通俗说的用户名和密码的复制,他拿着用户密码进行访问,但是这种方案有一个致命的缺点,是不是很不安全呀,那我给这个打印过了有用密码,那这密码如果泄露的话,别人得到它是不是也能进行访问,所以这种方案肯定一般我们不这么用,但是它能实现,这是第一种方式,就是用户名和密码复制。
06:09
这各位应该很清楚啊,比如我现在我把我的网盘的用户密码给你,你拿着是不是能访问呀,但是这里边比如你拿着我的用户密码给别人,别人是你能访问,所以这种方式很不安全,但是能做到这是第一种方案授权,然后除了这个之外,里边还有第二种方式,这种方式叫做通用的开发者key。那这个什么意思呢?它就好比说啊,是一把万能钥匙,什么叫万能钥匙?理论上一把钥匙能打开一把锁,而我现在这把钥匙能打开多把锁,有话说,我现在啊,这里边有一个过程,我Lucy和打印服务他们中间做一个约定,这里边我们共同开发一把钥匙,这把钥匙呢,既用Lucy能访问,打印服务也能访问,就是开发一个通用者开发者key,好比说是一把万能钥匙,拿着万能钥匙,我这个Lucy也能访问,打印屋也能访问。
07:09
但是这种方式也有一个缺点,我这里写到它适用于什么?合作商或者授信的不同业务部门之间,就是你之间有合作关系,或者你是部门中的,你公司里边的不同部门,这个之间也会这么做,而这种场景中有很多时候并不合适,给大家举个例子啊。比如说啊,现在在座的某个同学,你开了一个公司,而你这个公司呢,你想去访问百度网盘,那这个时候你去找百度谈合作,说我们一起合作吧,我们开发一个通用key,然后咱们能进行访问,但是你想一下啊,百度会跟你合作吗?你可以想到是不是肯定不会啊,为什么?因为你的公司的规模各方面跟百度完全不对等,所以他不会跟你合作,比如现在阿里巴巴去找百度合作,那他们合作几率是很大的,因为他们是对等的公司,所以这个时候呢,这种方式要他去宴请,一般适用于你的合作商,或者你的公司中的不同部门之间,比如你随便去找某公司,他一般很难跟你合作。
08:18
所以这个啊,这是第二种方式,然后除了这个之外呢,最后有第三种方式,也就是我们的凹凸do方式,那这种方式怎么做呢?给大家说一下啊,比如现在我这个胆服要去访问这个存储服务,那存储服务呢,它就对外生成这么一个授权,什么授权的,说的通俗点啊,他就对外呢,颁发这么一个令牌,比如说指定我这个存储服务给打印服务颁发令牌,颁发令牌设置令牌的这个有效时间,然后打印服务拿着令牌对他进行访问,访问之后当令牌过期了,他就不能访问,包括在访问过程中,我存储服务可以再收回令牌,让你随时也不能访问,所以就是给某个服务器颁发令牌,拿着令牌进行操作,而令牌什么意思呢?说到通俗点啊,就是按照约定的一定规则生成一串字符串。这字符串。
09:18
颁发给某个服务,他拿着进行访问,设置字符串的有效时间,包括可以随时去吊销这个字符串。这个过程就是auto to的解决方案。也就是这张图上。存储服务给打印服务颁发一个字符串,设置有时间,比如是一小时,它在一小时之内可以进行访问,但是一小时过程中,存储服务可以随时收回令牌,然后它这里边进行操作,当然令牌的颁发令牌字符串我们要替他进行加密等等处理,所以这一个就是第三种方式,就是out to的这种方式,生成这么一个字符串,用它进行操作。这各位给他知道啊,而这里强调啊,这个auto two呢,只是约定我们生成颁发令牌,生成字符串,但是字符串按照什么规则生成,它并没有约定,只告诉你用字符串方式解决,而具体怎么做,咱之前提到过一个工具叫JWT,各位不知道是否记得啊,JWT就是生成字符串的其中的一种规则,当然可能自己约定更多规则,Auto two只约定这种解决方案,并没有约定具体怎么去做。
10:33
所以这个啊,就是关于order to的这么一个说明,就是颁发令牌,设置令牌的有效时间,包括随时去解除这么一个令牌。所以这就是关于啊auto to解决的第一个问题就叫做开放系统间的授权问题,各位把这给他知道就可以了,就是用这种令牌方式进行解决,我这里写一下啊。令牌经解决,令牌的这个词好理解,好比说就是古代打仗的时候,这个元帅颁发一个令箭给某个将军,然后他拿着这个令箭去打仗,去调兵,去做什么事情,好比说这个过程,而这个元帅呢,可以随时把这个驾令给他收回来,让他不能再做这个事情。
11:18
这个啊,就关于我们说的里边的第一个解决的这么一个问题,开放信用间的授权问题,给各位做了一个说明。然后这个说完之后呢,我们再来看第二个问题,叫做单点登录问题,这个问题呢,U to也可以解决,那我先说一下什么叫单点登录,比如说给大家画一下啊。假如我现在啊,有一个项目,比如说我们这个项目呢,就是咱们这个上医通这个项目,或者说是我们这个医药的这个项目,写下上医通这个项目,而在上医通项目中是不是有很多的这个微服模块,比如咱们在开发中应该开发了很多的模块啊,有很多,假如说第一个模块是在那个医院的这个管理模块。
12:08
比如说第二个模块是我们这个用户模块,第三个模块,比如是我们这个就是用户的这个数据字典模块等等很多模块,那大家注意啊,比如我现在啊,我在医院这个模块,我操作咱是不叫进登录,而我什么叫单点登录,比如现在我在医院模块登录之后,就是已经完成登录,然后我现在再去访问用户模块,再去访问其他模块,那这个时候不需要再次登录,也就是说你只需要在其中的某个模块登录,然后其他模块就可以直接进行访问。不需要你再二次。进行登录啊,直接进行访问,这个过程我们都叫做单点登录,在实际中很多地方都用到,举个例子啊,比如各位都用过百度,当你在百度这个贴吧登录之后,你在访问百度文库,百度知道,百度网盘是不需要再登录了,这就是典型的代理登录过程,而我们现在这个过程用auto to这个方案也可以进行解决啊,当然这个解决有很多种方式,比如说各位应该知道,通过red加cookie,通过那个session复制,通过等等方式可以做到,而现在用auto to这种方案也可以把这个进行解决。
13:33
那给各位说一下这个过程我们该怎么去解决,大家看一下我里边的这张图上就标出来了,这个用凹凸的方式怎么去解决,单点登陆也就是里边的。这么一个过程,我把这个给各位截过来,然后给大家详细。分析一下里面的过程啊,我们来看到。就是在这个过程中什么意思呢,我把这图啊,我先往下快一点啊,咱们这张图给各位详细分析一下。
14:09
这个啊,你把这个稍微调整一下。然后各位看啊,这一张图中呢,就描述出来了,单点登录通过autodo方式怎么做的,大家看啊,比如说我现在啊,我们看第一部分,也就是里边的这个部分,在这里边呢,比如说我第一次访问,那这里边呢,咱肯定进行一个叫auto server,就是你说那个授权或者认证过程,通俗说就是咱的登录,咱查就库进行登录,而登录之后呢,这里边根据你的这个相关的内容返回一个token,就是咱说那个字符串,这token呢,咱可以自己约定规则,或者通过咱之前讲那个JWT来生成,然后把token字符串返回,返回之后呢,当咱们下一次访问,大家看我怎么做啊,每次访问都拿着to进行访问,然后在服务端咱验证ton中有没有咱的数据,如果有数据,那就是登录状态,咱往下操作,如果这token中没有数据,或者token伪造,或者token经过期了,那我们再。
15:14
进行登录,这个过程就是用auto two的方案进行解决,通过token进行实现,而auto two就告诉我们按照一定规则生成字符串,只是说他没有规定具体字符串是怎么生成的,咱通过GWT,包括其他方式可以做到,但是这个方案是一致的。这是我们做一个说明啊,我再重复一遍啊,第一次访问咱查数据库进行验证,然后验证之后返回你的token字符串,下次再访问,每次访问都带着token字符串进行访问,而咱们判断token字符串是否有效,包括里边是不是有咱的信息,如果有效,别人有信息,那咱们就是登录,我们进行操作,如果这个透明字符串不有效,过期了,或者里边没有数据,那这里边咱们就表示不是登录,我们登录之后再进行操作,所以这就是auto to的解决的第二问题叫做单点登录问题。
16:12
各位把这个他知道啊。所以咱们现在呢,就把我们这个理论知识做到了,包括这个奥兔的方案,在咱们的社交登录中就要用到,比如说咱们一会儿说这个。微信登录。就是用到了凹凸的方式,通过一个生成的字符串,或者说颁发一个令牌,拿着令牌再进行访问,再得到下的数据,咱一会儿会有演示,所以现在这是关于奥two这个理论知识讲解,通过我的讲解呢,要求各位啊,至少知道这么几点,第一个你知道奥two是一种针对特定问题的解决方案,包括他能解决哪些问题,然后每个问题怎么解决道各位先给他知道,咱们一会儿就来说这个微信登录,然后里边就用这种方案在里边做了一个具体体现。
17:04
所以这个给个V9说完了关于奥的这么一个讲解。
我来说两句