00:00
集视频呢,给大家分享一下SP server的这个生成token的这么一个过程啊,我们打开文档啊,我们整个的调试呢,都基于postman来调试啊,这里脚本给大家已经生成好了,直接下载。然后在这个postman里面去导入就可以了,Import选择这个文件。会发现有个posman的一个分组啊,密码模式,客户端模式,短信模式,包括刷新令牌,教样令牌,获取用户信息啊,已经给大家准备好了,那么我们是在启动一下我们整个的配的项目,我们进行相关的调试,呃,大概的步骤的话,我已经写了这个文档了,就过一下这篇文档。我们请求的报文啊,大概是这个样子啊,我重新。我们把它,我们现在开始操作,选中密码模式,我们来send。
01:05
会发现已经获取token了,对吧?呃,这个我们主要来调调试它这个生成token的过程,那首先呢,呃,我们网关上,网关上呢会有一个简单的处理,网关上主要处理什么?我们前端传过来的密码是一个密文啊,我们网关上要对这个密文进行解密以后,把它传给视频Q,你比如说我们这个密码字段啊,你要给我解成这个123456,我的视频o server才能认认识这个123456,这个呢,其实其是前端加密的对称加密的,在我们网关的password decod啊这个类里面会进行一些解密的处理啊,如果是登录请求啊,并且不是刷新的请求,因为登录和刷新的那个URL是一样的,区分一下,然后就会进行这个AES的这个解密,然后。
02:06
生成除了123456,再往下游进行传递啊,进行传递,这是讲的一个功能,就是网关上的处理,一个是密码的解密,另一块的话,如果你的客户端啊,我们讲的客户端就是这一块啊,就是请求头里面请求handle到里面会有一个啊basic的头,如果这个解密以后。啊,这个值的话,大家应该很好奇是什么啊,我们用网站把它解密一下,呃,Secret是test的这样的一个加密的BASE64的一个一个结果啊,一个结果啊,就是这个basic头,如果这个test客户端哦,是否是要校验验证码啊,我们跳过验证码诶是需需不需要啊,忽略这个客户端,那你配置文件里面去去过去,如果不需要校验的话,直接会跳,跳过这个check code的一个过程,这是第一步的,这个网关的前置处理啊,主要是两块,一个是密码啊,验证码的一个校验,一个是密码的这个转化成铭文啊,主要是这个,一个是password,另一个是这个basic的这个啊。
03:22
你可以参考这个前端登录加密的处理逻辑,这是第一个,我们解密完以后,那就到了我们的认证中心啊,就是第一步的这个client认证啊,也就是说我先判断这个basic头你填的合不合理啊,就是这一块你填的合不合理,它是需要哪个filter呢?是我们的。这个O奥斯可兰特啊,这个我们把它打断点啊,这个我们第八个一下啊,第八个一下。
04:00
同曼重新发一个请求,哎,是不是进到这里,这里面它怎么去认证的啊,首先把它转换一下,转换成请求,把那个请求的信息给拿到啊,这个其实是没有认证,他到了这个auto server manager这一步才会去认证啊,我们再往下。往下,往下到这一步的时候,实际上是要去调我们的文档中的第二步,第二步就是这个。去register client啊,我们看一下我们实践register。啊,去我们这个时限类里面去查,根据我们请求的兰去查出这个信息。啊,进行一系列的校验啊,校验校练完成呢,他会得到一个认证的一个结果啊,认证的结果我直接过去就可以了,认证的结果这就认证成功了啊认证成功了第一步啊,就是第一步的客户端啊,就讲了basic头的认证已经成功了,那继续往下成,成功以后他继续走第二个filter,也是我们最重要的一个filter,就是token and point filter啊会接管我们全部的这个请求啊正也就是说正式接受登录请求,我们去看一下这个这里面啊做了哪些事情。
05:30
啊,我们搁这搞搞个断点啊,他就过来了,首先获取一下你的这个grandpa对吧,判断一系列的判断,判断你的值入参对不对,到了这一步的话,就是还是一个convert,这个convert的意思呢,就是根据你请求类型组装出来不同类型的。登录认证的这个实体啊,啊,就是我这里写了。
06:00
组装登录认证的一个对象实体,我们这里是密码模式啊,我们看它组装出来是什么东西啊,我们把它断联往下走。它组装出来以后是一个all resource owner password,一个密码模式的token,啊,我们继续往下走。他呃,他会调取这个视频QT框架的一个认证啊认证他认证肯定是认证以后的话,往下走的话,就会到我们的一个这个认证的调用了,到具体的provide了,我们就是到了我们的这个呃provider password provider啊我们看一下password provider第一步呢。呃,刚才刚才也讲了啊,我们再看一下,刚才是convert,这个convert大家可以看一下,这convert是一个,呃,这个convert其实最终使用的是这个password convert去处理和请求,它处理完这个请求转化成一个password和这个token啊,转换成这个认证对象,其实现在还没有认证,只是大家去看一下,它是组合这个参数,把你的password啊,啊看它的负类吧,把它的password去构建出来这个这个这个头N的对象就可以了啊嗯,还是找到它的父类里面。
07:35
啊,找到它这个实现类里面去构建出来这么一个token对象,构建出来这个token对象的话,我们也刚才也想了,他继续往下走,实际上走最终的这个,呃,认证认证啊认证,那你的认证是交给谁来处理呢?谁能支持啊这个token呢,就是我刚才这个ton,谁能支持这个token provide只有我们自己的这个,我们自己写的这个password,呃,认证的token能支持,所以说它就会到这里来啊,我给大家看一下。
08:09
哎,他就到这里来,就构建出来了我们这个token啊,构建出来了个token,构建出来token我们的provider,然后provide继续往下,咱们看一下文档,那继续往下的话,那就不是我们来处理了啊,它构建构建成以后,他们继续就会去调SP security啊,核心的这个类DA provider啊。好叫配DAO这个类呢,实际上是这个配框架进行扩展了,它原生的叫DAO啊,这个provide我们扩展了,扩展以后的好处就是我们支持的多用户体系啊,这个类里面,这个类里面最重要的就是这个获取用户信息啊,获取用户信息就是这个这个方法,这个方法里面去调用我们所有的这个查出来这个UDQ的实现啊,往下查,它里面最重要的方法就是根据用户名查用户,这个地方会有两呃很多种实现吧,你直接查数据库,组装出这个U1DT5对象也可以配个框架是通过啊这个认证中心去调up Ms生成了这个result也可以啊,这里都可以,我们主要是考虑解耦,生成出来这个UR以后的话,我们正常逻辑以后,呃,生成出来这个用户。
09:41
库这个用户的会进行一些的这个一些条件的检测,很重要的一个条件就是我们密码的检测,当然第一步我们判断是不是APP登录,就是短信登录,那短信登录的话,你就不需要走password这个matter,如果是你普通的账号密码登录的话,需要进行密码的校验,它密码校验非常的这个呃,非常的好啊,就是我们的密码匹配校验啊,密码匹配校验我们直接看到这一步吧。
10:12
我们去看一下这个passworddco,它现在支持的密码就是有,呃,我们常见的MD5啊,包括Co的,包括铭文啊,那你你的数据库存了密文的话啊,存了秘文的话,那就是。呃,需要我们数据库看一下这个数据库啊,看这个数据库,你看我们存的这个是个秘文C,对吧,它是存了一个秘文对吧,但是我们的频security框架不知道你是使用了什么的加密算法来,需要你把这个加密算法告诉这一个SP security,也就是说你在构建的user de对象,把你使用的算法的特征码告诉他,就是在你的密文前面构建一个特征码,如果是你铭文的话,就是a op op啊,空白的这个,这个后面加铭文就可以了,现在我们是用这个综合的一个算法,然后呃,只需再去看我们这个user service的时候啊,你会发现我们去构建user的时候,最前面都会给你加了这么一个特征码。
11:22
啊,讲了这个特征码啊,这就是密码匹配的过程,这密码匹配就在我们的这个DAO provide的,呃,这一步啊,这个checker里面,这个check方法里面啊,我们继续往下,那我的check成功了,那就是到了我们的还是回到我们那个provider里面啊,认证授权的provide,那我认证成功了,这个地方就会拿到一个具体的对象了,那我们认证通过,我们看一下这个返回的userr nameme pass,呃,User password这个认证对象,你会发现这个里面会有了我的这个用户信息的mean,包括手机号啊,这个部门编号啊,这些基本的包括它的权限的这些信息啊,已经有了下面的过程啊,就是来构建access token,就是我们的请求令牌,还有另一个呢,就是我们刷新令牌,它怎么构建的呢?会直接用了这个token grant啊token grant往下看一下哦,我们用的英文。
12:22
Pig里面进行了这个个性化,就用custom two action grant这个里面啊,基本的这个client信息获取到,然后呃,然后会最主要的是有一个access token啊,这个个性化啊,我们看一下这个个性化,这个个性化里面我们其实就是把用户的信息全部返回啊,这个返回请求登录接口的时候,同时会返回用户的全部的信息,也就是你不用再调U的ino接口来通过token再换了两部啊这个样的话就是呃,然后生成了U,呃,这个token格式呢,就是token啊,固定的前缀,哪个client,哪个客户端生成用户名是什么,再加上一个UUID啊等会生成完了以后,我们来看一下,这个时候啊,已经生成完token了,那我们。
13:19
再往下啊,生成完token了,那就是生成我们refresh token啊rere token逻辑差不多也是用了refresh token呃建的啊这个生成,那生成完以后就会调用我们的存储啊调用存储那存储逻辑啊,其实呃这个频host server其实提供了是内存和GDBC的形式,我们扩展了ready存储的,你可以去看一下这个相关的逻辑啊存储存储完以后啊,存储完以后的话就是到了我们啊这个逻辑就已经处理完了,我们pro已经处理完了,那就可以返回这个,呃,这个这个认证完的对象了,反正完认证对象呢,最后一步就是啊,我们做后边的登录成功事件,我们登录成功事件肯定就是要success对吧?啊,我们监听这个认证成功的事件处理器啊,当成登录成录,登录成功以后。
14:19
我们这里做了几个事,一个是就是输出这个一个log,然后会调用远程去记录一个这个日志啊,这个日志一个是在文件里面输出,另一个是数据库,最后呢,就把这个token输输出归我们个客户端啊,输输入我们给我们的POS慢这里面深的这个方法我们看一下,这个方法还挺这个多的,我们去去构建一个这个输出的对象啊,输出的对象我们看一下是什么东西,Response啊,这个access token response。这个response里面其实就是一些关于token的,呃,这个扩展信息啊,Li啊,还有access token的这个这些值啊,Refer token的值,最后呢,去调用我们这个,因为你这个格式怎么输出去,对吧,你这个复杂的对象怎么输出去,它给了一个response carrot啊,我们看一下这个是怎么搞的啊,他用的这个,他应该是用的这个,呃,O to action token response carrot啊,呃,你看这里面去输出就可以了。
15:32
那我们最后啊,输出给客户端的这个这个token啊,看一下啊,就是这个东西,呃,经过了这么十几步吧,13步啊,他才能输出这么投肯但整个过程中啊,个性需要个性化定制的东西啊,我们已经处理了啊好,这就是我们讲的这个spring的一个生成token的一个流程。
我来说两句