分布式整合之认证模块搭建|学习笔记

简介: 快速学习学习分布式整合之认证模块搭建

开发者学堂课程【Spring Security知识精讲与实战演示(三)分布式整合之认证模块搭建】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/732/detail/13070


分布式整合之认证模块搭建

 

内容介绍

一、课程简介

二、实际演示

 

一、课程简介

上面我们已经完成了通用模块的创建,接下来我们真正来创建资源微服。我们需要再次创建一个新的模块,选中副工程,在副工程下创建一个模块,下一步我们起个名字叫 heima-auth-server。

image.png

接下来下一步再 finish ,在这里面我们需要导入认证所需要的下包。

 

二、实际演示

首先我们肯定要导入 spring-boot-starter-web 这样一个包。我们也需要导入 spring-boot-starter-security 这个包,这里面不管是生成还是接替,都到 tet 相关工具类,我们把 common 也导进来。这里面要认证就一定要连数据库,所以数据库相关的包我们也要导进来,首先第一个就是 mysql 驱动包,我们可以指定一个版本5.1.47,接下来我们要导入 mybatis 这个包,相关架包我们已经导完了。

之后我们要提供对应的配置文件,在项目的资源下面创建一个配置文件,我们起个名字 application.yml,

image.png

在这里面因为我们要两个不同的服务,所以必须指定两个端口号,这里面就叫9001,接下来我们还要指定 spring数据库连接池相关的信息。在这里面我们用的是 mysql 第一个就可以了,接下来需要 url,这里面我们也可以根刚才一样,我们用的数据库依然是 autharity,

image.png

接下里是 username:root,password:root ,这样我们数据库相关的信息就导完了,接下来mybatis,

type-aliases-package-.itheima domain ,这里面我们需要先创建一个包,接下里开启 tool 模式,改成 true,到此我们的配置文件已经差不多了,上面要写解释器是因为是 gst 页面,下面的前后端已经分离了,这里就不能写解释器了,因为前后端分离我们的请求都是不请求,里面不需要写解释器了,我们可以把日志拿过来,这里需要指定一个包com itheima:debug,按理说到这已经差不多了但我们需要把我们刚才准备好的工具读入到项目中来,这个路径写到配置文件中方便以后修改,而不是写死在代码中,这里再来一个配置文件,叫 rsa ,写上key,key 分公要和私要,比如说写上 pubKeyFile,下面来一个 priKeyFile,这两个地址可以从 common 的类中粘贴一下。

刚我们在测试类的时候已经将两个地址拿过来了,直接贴过来,上面是我的私钥,放到下边,

image.png

下面是公钥,放到上面来,到此我们的配置文件就制定完成了,先不要着急去写我们的启动类,大家对这里面有自定义的配置文件,所以需要自己读取。

image.png

上面都是有框架的,会自动读取。我们可以在上面创建一个配置类,去读取我的配置文件,我们写上 com.itheima.config我就可以随便取一个名字,比如RsaKeyProperties,要想起作用,我们需要在上面先加一个 domain,指定它是一个配置类,接下来我们需要在上面写上配置文件的名称:ConfigurationProperties,需要制定以下配置文件的前缀,在之前,有value,prefix,这里面我们用哪一个可以,这里面说了 value 的别名是prefix,所以我这边可以直接指定我配置文件的前缀,这个前缀就是我们自己定义的 rs.key ,有了这个前缀我们就可以读取里面的属性了,这里面我们需要添加两个属性:private.spring,一个公钥一个私钥,

接下来是 spring 类型的私钥,这两个名字一定要和配置文件相对应,我们要生成它的 get 方法,按理说到这里已经可以读取到配置信息,

image.png

打击注意我们用的是得到的并不是一个字符串,应该直接拿到对应的私钥和公钥对象,我们真正需要的是 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,把它删掉就行。

image.png

接下俩是 control serverce,认证相关的代码就已经拿过来完了,我们可以把 control 直接拿过来便于测试,这个不让直接拿,我就先创建一个包 controller,我就可以把包拿过来,便于测试,拿过来之后需要做一个改动,因为我们现在是前后端绝对分离,不能跳回页面了,可以直接返回数据,这里面我写上一个restController,这个 restController 里面就已经包含了 respondbody,也就是它现在就是一个返回数据的处理器而不是跳转数据的处理器;

image.png

可以先把这上面的注解去掉,此时在这来一句提示:列表查询成功,到此我们这里面的环境已经差不多成功了,但是我们这里面并没有加入 spring secruty,当然有的是默认的,导了包以后就已经有了 spring secruty,但是这里没有自定义配置,接下来我们就看我们如何实现分布式认证。

相关文章
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
1255 0
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
691 1
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
361 1
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(三)Eureka服务注册中心
345 1
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
1668 0
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(五)OpenFeign的使用
448 0
|
负载均衡 算法 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(四)Ribbon的使用
435 0
|
4月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
373 2
|
4月前
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
328 6
|
5月前
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。

热门文章

最新文章