开发者学堂课程【Spring Security知识精讲与实战演示(三):分布式整合之认证模块搭建】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/732/detail/13070
分布式整合之认证模块搭建
内容介绍
一、课程简介
二、实际演示
一、课程简介
上面我们已经完成了通用模块的创建,接下来我们真正来创建资源微服。我们需要再次创建一个新的模块,选中副工程,在副工程下创建一个模块,下一步我们起个名字叫 heima-auth-server。
接下来下一步再 finish ,在这里面我们需要导入认证所需要的下包。
二、实际演示
首先我们肯定要导入 spring-boot-starter-web 这样一个包。我们也需要导入 spring-boot-starter-security 这个包,这里面不管是生成还是接替,都到 tet 相关工具类,我们把 common 也导进来。这里面要认证就一定要连数据库,所以数据库相关的包我们也要导进来,首先第一个就是 mysql 驱动包,我们可以指定一个版本5.1.47,接下来我们要导入 mybatis 这个包,相关架包我们已经导完了。
之后我们要提供对应的配置文件,在项目的资源下面创建一个配置文件,我们起个名字 application.yml,
在这里面因为我们要两个不同的服务,所以必须指定两个端口号,这里面就叫9001,接下来我们还要指定 spring数据库连接池相关的信息。在这里面我们用的是 mysql 第一个就可以了,接下来需要 url,这里面我们也可以根刚才一样,我们用的数据库依然是 autharity,
接下里是 username:root,password:root ,这样我们数据库相关的信息就导完了,接下来mybatis,
type-aliases-package-.itheima domain ,这里面我们需要先创建一个包,接下里开启 tool 模式,改成 true,到此我们的配置文件已经差不多了,上面要写解释器是因为是 gst 页面,下面的前后端已经分离了,这里就不能写解释器了,因为前后端分离我们的请求都是不请求,里面不需要写解释器了,我们可以把日志拿过来,这里需要指定一个包com itheima:debug,按理说到这已经差不多了但我们需要把我们刚才准备好的工具读入到项目中来,这个路径写到配置文件中方便以后修改,而不是写死在代码中,这里再来一个配置文件,叫 rsa ,写上key,key 分公要和私要,比如说写上 pubKeyFile,下面来一个 priKeyFile,这两个地址可以从 common 的类中粘贴一下。
刚我们在测试类的时候已经将两个地址拿过来了,直接贴过来,上面是我的私钥,放到下边,
下面是公钥,放到上面来,到此我们的配置文件就制定完成了,先不要着急去写我们的启动类,大家对这里面有自定义的配置文件,所以需要自己读取。
上面都是有框架的,会自动读取。我们可以在上面创建一个配置类,去读取我的配置文件,我们写上 com.itheima.config我就可以随便取一个名字,比如RsaKeyProperties,要想起作用,我们需要在上面先加一个 domain,指定它是一个配置类,接下来我们需要在上面写上配置文件的名称:ConfigurationProperties,需要制定以下配置文件的前缀,在之前,有value,prefix,这里面我们用哪一个可以,这里面说了 value 的别名是prefix,所以我这边可以直接指定我配置文件的前缀,这个前缀就是我们自己定义的 rs.key ,有了这个前缀我们就可以读取里面的属性了,这里面我们需要添加两个属性:private.spring,一个公钥一个私钥,
接下来是 spring 类型的私钥,这两个名字一定要和配置文件相对应,我们要生成它的 get 方法,按理说到这里已经可以读取到配置信息,
打击注意我们用的是得到的并不是一个字符串,应该直接拿到对应的私钥和公钥对象,我们真正需要的是 private PublicKey 和 private PrivateKey 这两个文件类型的对象,而不是两个字符串,所以我们需要用时,可以直接在当前配置文件中得到这两个对象,大家都知道得到这两个对象是通过这两个路径获取到的,要通过这两个路径获取到,我们要去确保这两个有值之后,对 Spring 有了解的都知道在 Spring中有 bin 的生命周期,也就是这两个属性都有值之后,换句话说就是 IOC 对象创造完了,di 属性也注入完值了,之后我们就可以使用这两个属性去做下一步的操作,这里有一个注解叫做 PostConstruct,意思是在对象构造完成之后来执行下面的方法,Public void createRanKey,当然方法名是随便起的,不一定非要叫这个名字。
我们主要是给这两个对象赋值,我们先说 public Key,在这里面我们就用public Key,写上 public file,在这里面有异常不用管让它抛出去,在这里面给私有的 key 值赋值,接下来还是 private PublicKey 私有的Key 所在的路径,这样的话这两个 Key 就有值了,这两个对象有值之后我们并不能在外界得到它,要想在外界得到它,要对应生成它的set get 方法,那么这里面其他的对象想用的时候就可以用了,这里面大家要注意一个事情,现在配置类已经写好了,但是容器并没有放置到 IOC 容器中,那么我们可以在项目启动的时候放到配置类中去完成。
我们来指定配置类 com.it.heima 直接在它上面写一个配置类,我们就可以写上 auth.serve 配置类名字,上面首先要加上一个 spring boot pubilcation,这是毫无疑问的。
接下来我们要写一个RSAKeyProjiect class,那这样的话我们当前的对象就会放入 IOC 容器中,以供其他地方使用,这里我们需要写上 public my,写上AuthServerApplication.class,args ,我们到此基本上已经把环境搭建好了,因为我们现在要用到认证相关的代码,所以我们可以直接贴过来,不用重复性使用,比如说这里面我们需要的是 pug.control,我们把它拿过来,接下来是 mapper 映射拿过来,拿过来以后大家注意要改两个点,拿过来以后已经没有了,因为我们现在没有使用通用 mapper,把它删掉就行。
接下俩是 control serverce,认证相关的代码就已经拿过来完了,我们可以把 control 直接拿过来便于测试,这个不让直接拿,我就先创建一个包 controller,我就可以把包拿过来,便于测试,拿过来之后需要做一个改动,因为我们现在是前后端绝对分离,不能跳回页面了,可以直接返回数据,这里面我写上一个restController,这个 restController 里面就已经包含了 respondbody,也就是它现在就是一个返回数据的处理器而不是跳转数据的处理器;
可以先把这上面的注解去掉,此时在这来一句提示:列表查询成功,到此我们这里面的环境已经差不多成功了,但是我们这里面并没有加入 spring secruty,当然有的是默认的,导了包以后就已经有了 spring secruty,但是这里没有自定义配置,接下来我们就看我们如何实现分布式认证。







