00:02
各位大家好,欢迎继续收看上硅谷视频课程,我们继续来学习spring security。在之前内容中呢,我们讲到了在web开发中进行认证和授权的这个方案,那我们下面讲解在微服务中进行权限操作的方案,在这个内容中呢,主要给各位讲解这么几个内容,我先做一个说明,然后咱们详细来说一下。首先我们要讲解的第一个内容给各位先介绍一下,就是什么是微服务。因为微服务呢,是目前一种比较主流的一种架构方式,包括很多项目都基于这种方式进行开发,所以咱们今天介绍什么是微服务,然后微服务介绍之后,第二个内容给大家介绍一下,在我们这个微服务中,我们进行这个认证和授权的一个实现的一个过程,就是里边要做认证,做授权,咱们该怎么去做,用什么方案更加合适,给各位做个说明,然后这个说完之后。
01:12
第三部分咱们就结合我们的spring security,然后加上微服中一些相关技术,比如说STEM等等,来完成一个认证和授权的一个案例,就是最第三部分咱来完成一个基于这个spring。Security进行认证授权的一个案例,案例中呢,我们要用到很多相关的技术,比如说STEM cloud BOO等等,所以这是我们在微复全限方案中主要要讲解以下三个内容,这个各位先给他知道,然后咱们下面我们就一个一个来看一下,首先我们看第一个内容,什么是微服务,给各位来做一个说明。
02:00
咱们看一下我的笔记中,我们来看到啊,我这里写到微服务呢,最早是在2014年提出来的,它是什么?是一种架构风格,用它做的适应是什么?使用一套小服务来开发单个用的方式的途径,那什么意思呢?说的通俗点啊,比如说我现在我做一个电商的一个项目,电商里边大家注意是不是有很多的模块,那我可以把它模块做个拆分,比如里边的订单模块,比如说里边的购车模块,把每个模块都独立进行开发,这是一种最简单的描述。然后微服务呢,有很多的优势,这里写到微服务中每个模块就像一个独立的项目,比如说你的订单就是一个独立项目,你的购物车就是独立项目,然后每个模块咱可以用不同的存储数据库,也是单个模块对应的自己的。
03:00
数据库,比如我订单就用我订单的数据库,购物车就用我购物车的数据库,我订单我用买so存储,购物车我用ready的存储,这样的话更好利用我们的分库,包括不同的存储介质的处理。另外微服务中你也可以让每个模块用不同的技术,比如我购物车我用Java,我订单我用PP,这些都可以做到,所以这是它的优势。而微服务呢,大家注意啊,它的本质上并不是维护本身,而是你提供的这一套基础的架构,这个架构的特点是什么呢?咱要明确啊,V服务它的本质就是你每个服务都可以独立部署,独立运行,独立升级,这就是微服咱们做的一个最基本的一个说明,那我给各位咱来简单画一下这么一个基本效果啊,就是比如说啊,我现在我想做一个项目,就是一个在线教育的一个项目,我想做这个。
04:05
在线。教育个项目,而在线教育项目中是不是会有很多多模块,假如说我现在里边我就画三个模块,实际中肯定它会有更多模块,比如说我这个在线教育项目中有这么三个模块,第一个是这个。讲师模块,因为里边有很多的讲师入驻嘛,包括里边有一个课程模块,包括里边有这个统计分析模块。等等这些模块,那这些模块咱按照微夫的方式,他们都是独立的运行,独立的部署,独立升级,而我在实习中,我可以把讲师这个微服务给他单独开发,部署到一家服务器中,课程模块部署到另外一台服务器中,统计分析模块再单独部署,然后他们之间没有直接的关系,但是通过一些技术可以实现互相调用,这就是微服一种最基本的解释。
05:05
这各位定知道,而目前我们的项目开发中,在实际中一般都是基于微服这种架构方式进行实现的,所以咱们现在讲的就是security在微服中进行认证和授权的方案,这是我们说的第一个内容,什么是微服务?给各位做了一个说明,然后这个说完之后,下面给大家说一下啊,咱们在微服务中如何实现认证和授权,给各位讲解一下这个基本的思路。那怎么来讲解,我们来说一下啊,首先里边有第一个概念。这个概念我觉得各位应该听过。叫什么单点登录,或者说叫SSO,一个意思啊,什么叫单点登录呢?比如我现在啊,在这个在线教育项目中,我要进行操作,咱是不是要登录或者说认证,而认证的时候呢?比如我现在在讲师模块,我们登录了,那我讲师登录之后,我再去操作课程,再去操作统计分析,是不需要在二次登录了,这就叫单点登录,一次登录其他模块都可以直接进行操作,所以咱们要做出这么一个效果,另外里边还有一个效果,我们叫授权。
06:26
什么叫授权?比如说我现在我用Lucy登录了,而Lucy的角色只是一个课程管理员,那他的权限应该只能操作课程模块,别的模块它不能操作,所以要做个授权,比如说我现在用admin这个用户登录了,我din属于管理员的这个角色,那管理员所有模块是不是都能操作,所以这个叫授权过程,咱们用spring security就来做到认证和授权的这个过程。那这过程我们具体该怎么实现,下面给各位做这么一个实现过程的分析,然后后面咱结合过程会用代码做个实验,那咱们来看一下这个过程啊,我这里边在课件中写到了,咱看这两句话。
07:15
第一个是基于session,第二个是基于cookie,基于session就是啊,它会对cookie中的CID进行解析,然后比对token,就是spring security最token做这个操作,但是咱们在微附中,因为里边有众多模块,所以我们一般用token,因为你用session,如果做单点登录并不是很方便,所以咱就基于这个token来实现这种。认证和授权token什么意思呢?你可以理解为它就是按照一定规则生成的一个字符串,然后里边可以包含用户信息,那下面我这张图上画的就是基于token怎么实现这个spring security做到认证和授权,那我下面把这个图给各位详细来解释一下。
08:07
要求各位把这过程一定要特别清晰,那我来具体说一下啊,这个图给各位,我先复制过来,就这个图。认证实验过程,那这过程怎么样?咱们具体看一下啊,首先我们看里边的第一步,我这里边把123456步骤应该都画出来了,咱看第一步啊,第一步呢,比如说现在我在微附中的某一个模块要进行登录,就是咱说的认证,认证过程中呢,咱肯定要查数据库嘛,根据用户名进行查询,调用咱们spring security中那个user details service,然后咱们认证通过之后,我的用户它里面有信息,比如包含用户名,包含什么基本信息,另外包含用户那个权限列表。
09:01
什么叫权限列表呢?比如说用户是Lucy Lucy是管理员这个角色,然后Lucy能访问讲师课程统计分析模块,这个叫缺陷列表,咱需要把它查出来,这是里边的第一步。然后查出来之后,第二步怎么做呢?咱们把这权限列表放到里边去,它的key可以存用户名value,就查出的权限列表,第三步把这个用户名再根据它生成一个token,啊注意是一个token,然后这个token呢,这里边咱要给它放到cookie中,这是里边的第三步和第四步,而它放到cookie什么意思呢?或者什么目的呢?咱们下次啊,再进行访问,我在每次访问请求的header里边就来带着这个token值,因为它在cookie中呢,我们可以取到,然后带这个值之后第五步,第六步就是由spring security做到的,在第五中spring security从head里边。
10:05
把投影值取到,取到之后得到用户名,拿着用户名到red中做个比对,看用户名有没有可以访问这个权限,这个列表,如果能比对到,那进行操作,如果比对不到,那进行其他的处理。所以它里边就这过程说的简单点就是拿着token放到cookie,放到red,每次请求带着token值比较red中的信息,看它是否一样,如果一样的话进行访问,如果不一样的话,那就不进行访问。所以这个就是进行认证授权的一个基本的实验过程。给各位做了这么一个说明。
我来说两句