第7章-SpringBoot安全管理45课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第7章-SpringBoot安全管理45课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SpringBoot 安全管理 45 课件
- 资源描述:
-
1、第7章 Spring Boot 安全管理Spring Security介绍及入门MVC Security安全配置介绍自定义用户认证及授权管理Security管理前端页面 学习目标了解Spring Boot的默认安全管理12 掌握自定义用户认证的实现 掌握自定义用户授权管理的实现34掌握Security实现页面控制的实现了 解掌 握掌 握掌 握 目录Spring Security快速入门7.27.27.17.1Spring Security介绍7.37.3MVC Security安全配置介绍自定义用户认证7.47.4点击查看本案例相关知识点点击查看本案例相关知识点7.57.5自定义用户授权管理点
2、击查看本案例相关知识点7.67.6Security管理前端页面 7.2 Spring Security快速入门 知识架构12基础环境搭建开启安全管理效果测试 7.4自定义用户认证自定义用户认证 知识架构123内存身份认证JDBC身份认证UserDetailsService 身份认证 7.5自定义用户授权管理自定义用户授权管理 知识架构123自定义用户访问控制自定义用户登录自定义用户退出456登录用户信息获取记住我功能CSRF防护功能 本章将针对Spring Boot的安全管理进行详细地讲解。章节概要实际开发中,一些应用通常要考虑到安全性问题。例如,对于一些重要的操作,有些请求需要用户验明身份后
3、才可以执行,还有一些请求需要用户具有特定权限才可以执行。这样做的意义,不仅可以用来保护项目安全,还可以控制项目访问效果。 7.1 Spring Security介绍什么是Spring Security?认识Spring Security Spring Security是基于Spring生态圈的,用于提供安全访问控制解决方案的框架。Spring Security的安全管理有两个重要概念,分别是Authentication(认证)和Authorization(授权)。认识Spring Security 7.1 Spring Security介绍Spring Security介绍 认识Spring
4、Security 7.1 Spring Security介绍MVC Security是Spring Boot整合Spring MVC框架搭建的Web应用的安全管理。WebFlux Security是Spring Boot整合Spring WebFlux框架搭建的Web应用的安全管理。OAuth2是大型项目的安全管理框架,可以实现第三方认证、单点登录等功能。Actuator Security用于对项目的一些运行环境提供安全监控,例如Health健康信息、Info运行信息等,它主要作为系统指标供运维人员查看管理系统的运行情况。Spring Boot整合Spring Security实现的安全管理功
5、能: 基础环境搭建 7.2 Spring Security入门1. 创建Spring Boot项目2. 引入页面Html资源文件3. 编写Web控制层搭建步骤: 基础环境搭建 7.2 Spring Security入门 创建项目,引入Web和Thymeleaf的依赖启动器 基础环境搭建 7.2 Spring Security入门在项目的在项目的resourcesresources下下templatestemplates目录中,引入案例所需的资源文件目录中,引入案例所需的资源文件,项目结构如下,项目结构如下 引入页面Html资源文件普通用户可访问的页面VIP用户可访问的页面项目首页面 基础环境搭
6、建 7.2 Spring Security入门Controllerpublic class FilmeController / 影片详情页 GetMapping(/detail/type/path) public String toDetail(PathVariable(type)String type, PathVariable(path)String path) return detail/+type+/+path; 至此,使用Spring Boot整合Spring MVC框架实现了一个传统且简单的Web项目,目前项目没有引入任何的安全管理依赖,也没有进行任何安全配置,项目启动成功后,可以
7、访问首页,单击影片进入详情详情页。 编写Web控制层 开启安全管理效果测试 7.2 Spring Security入门1. 添加spring-boot-starter-security启动器2. 项目启动测试搭建步骤: 开启安全管理效果测试 7.2 Spring Security入门org.springframework.bootspring-boot-starter-security 添加spring-boot-starter-security启动器一旦项目引入一旦项目引入spring-boot-starter-securityspring-boot-starter-security启动器,
8、启动器,MVC SecurityMVC Security和和WebFluxWebFlux SecuritySecurity负责的安全功能都会立即生效负责的安全功能都会立即生效 开启安全管理效果测试 7.2 Spring Security入门 项目启动测试项目启动时会在控制台项目启动时会在控制台ConsoleConsole中自动生成一个安全密码中自动生成一个安全密码 开启安全管理效果测试 7.2 Spring Security入门浏览器访问浏览器访问http:/localhost:8080/http:/localhost:8080/查看项目首页查看项目首页项目中并没有手动创建用户登项目中并没有手
9、动创建用户登录页面,而添加了录页面,而添加了SecuritySecurity依赖后,依赖后,Spring SecuritySpring Security会自带一个默认的登录页面会自带一个默认的登录页面 项目启动测试 开启安全管理效果测试 7.2 Spring Security入门登录页面随意输入一个错误的用户名和密码,会出现错误提示登录页面随意输入一个错误的用户名和密码,会出现错误提示 项目启动测试 开启安全管理效果测试 7.2 Spring Security入门SecuritySecurity会默认提供一个可登录的用户信息,其中用户名为会默认提供一个可登录的用户信息,其中用户名为userus
10、er,密码随机生成,密码随机生成,这个密码会随着项目的每次启动随机生成并打印在控制台上,这个密码会随着项目的每次启动随机生成并打印在控制台上,在登录页面输入在登录页面输入用户名和密码用户名和密码 项目启动测试 开启安全管理效果测试 7.2 Spring Security入门这种默认安全管理方式存在诸多问题,例如:只有唯一的默认登录用户user、密码随机生成且过于暴露、登录页面及错误提示页面不是我们想要的等。默认安全管理方式存在的问题 MVC Security安全配置介绍 7.3 MVC Security安全配置项目引入项目引入spring-boot-starter-securityspring
11、-boot-starter-security依赖启动器,依赖启动器,MVC SecurityMVC Security安全管理功安全管理功能就会自动生效,其默认的安全配置是在能就会自动生效,其默认的安全配置是在SecurityAutoConfigurationSecurityAutoConfiguration和和UserDetailsServiceAutoConfigurationUserDetailsServiceAutoConfiguration中实现的。中实现的。 导入并自动化配置启动Web安全管理SecurityAutoConfiguration 用于配置用户身份信息UserDetail
12、sServiceAutoConfigurationMVC Security安全配置简介 MVC Security安全配置介绍 7.3 MVC Security安全配置1. 要完全关闭Security提供的Web应用默认安全配置,可以自定义WebSecurityConfigurerAdapter类型的Bean组件以及自定义UserDetailsService、AuthenticationProvider或AuthenticationManager类型的Bean组件。2. 另外,可以通过自定义WebSecurityConfigurerAdapter类型的Bean组件来覆盖默认访问规则。如何关闭Se
13、rcurity提供的Web应用默认安全配置 MVC Security安全配置介绍 7.3 MVC Security安全配置方法描述configure(AuthenticationManagerBuilder auth)定制用户认证管理器来实现用户认证configure(HttpSecurity http)定制基于HTTP请求的用户访问控制WebSecurityConfigurerAdapter类的主要方法及说明如何关闭Sercurity提供的Web应用默认安全配置 内存身份认证 7.4 自定义用户认证1. 自定义WebSecurityConfigurerAdapter配置类2. 使用内存进行身
14、份认证3. 效果测试搭建步骤: 内存身份认证 7.4 自定义用户认证EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter 注:EnableWebSecurity注解是一个组合注解,主要包括Configuration注解、Import(WebSecurityConfiguration.class, SpringWebMvcImportSelector.class)注解和EnableGlobalAuthentication注解 自定义WebSecurityConfigurerAdapte
15、r配置类 内存身份认证 7.4 自定义用户认证 使用内存进行身份认证SecurityConfigSecurityConfig类中重写类中重写configure(configure(AuthenticationManagerBuilderAuthenticationManagerBuilder authauth) )方法方法,并在该方法中使用内存身份认证的方式自定义了认证用户信息。定义用户认证信息并在该方法中使用内存身份认证的方式自定义了认证用户信息。定义用户认证信息时,设置了两个用户名和密码以及对应的角色信息。时,设置了两个用户名和密码以及对应的角色信息。(具体代码见备注)(具体代码见备注)
16、内存身份认证 7.4 自定义用户认证重启项目进行效果测试,项目启动成功后,仔细查看控制台打印信息,发现没有默重启项目进行效果测试,项目启动成功后,仔细查看控制台打印信息,发现没有默认安全管理时随机生成的密码了。通过浏览器访问认安全管理时随机生成的密码了。通过浏览器访问http:/localhost:8080/http:/localhost:8080/ 效果测试 内存身份认证 7.4 自定义用户认证输入错误的用户名和密码,会出现相应的提示输入错误的用户名和密码,会出现相应的提示 效果测试 内存身份认证 7.4 自定义用户认证输入正确的用户名和密码,会进入网站首页输入正确的用户名和密码,会进入网站
17、首页单击电影名称同样可以查看影片详情 效果测试 JDBC身份认证 7.4 自定义用户认证1. 数据准备2. 添加JDBC连接数据库的依赖启动器3. 进行数据库连接配置4. 使用JDBC进行身份认证5. 效果测试搭建步骤: JDBC身份认证 7.4 自定义用户认证t_customer 用户表t_authority 用户权限表t_customer_authority 用户权限关联表 数据准备数据库 springbootdata JDBC身份认证 7.4 自定义用户认证org.springframework.bootspring-boot-starter-jdbcmysqlmysql-connect
18、or-javaruntime 添加JDBC连接数据库的依赖启动器 JDBC身份认证 7.4 自定义用户认证spring.datasource.url=jdbc:mysql:/localhost:3306/springbootdata?serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=root 进行数据库连接配置 JDBC身份认证 7.4 自定义用户认证在在SecurityConfigSecurityConfig 类中的类中的configure(configure(AuthenticationM
19、anagerBuilderAuthenticationManagerBuilder authauth) )方方法中使用法中使用JDBCJDBC身份认证的方式进行自定义用户认证身份认证的方式进行自定义用户认证, ,使用使用JDBCJDBC身份认证时,首先身份认证时,首先需要对密码进行编码设置(必须与数据库中用户密码加密方式一致);然后需要需要对密码进行编码设置(必须与数据库中用户密码加密方式一致);然后需要加载加载JDBCJDBC进行认证连接的数据源进行认证连接的数据源DataSourceDataSource;最后,执行;最后,执行SQLSQL语句,实现通过用语句,实现通过用户名户名userna
20、meusername查询用户信息和用户权限查询用户信息和用户权限。( (具体代码见备注具体代码见备注) ) 使用JDBC进行身份验证 JDBC身份认证 7.4 自定义用户认证重启项目进行效果测试,项目启动成功后,通过浏览器访问重启项目进行效果测试,项目启动成功后,通过浏览器访问http:/localhost:8080/http:/localhost:8080/ 效果测试 7.4 自定义用户认证输入错误的用户名和密码,会出现相应的提示输入错误的用户名和密码,会出现相应的提示JDBC身份认证 效果测试 7.4 自定义用户认证输入正确的用户名和密码,会进入网站首页输入正确的用户名和密码,会进入网站首
21、页单击电影名称同样可以查看影片详情JDBC身份认证 效果测试 UserDetailsService 身份认证 7.4 自定义用户认证1. 定义查询用户及角色信息的服务接口2. 定义UserDetailsService用于封装认证用户信息3. 使用UserDetailsService进行身份认证4. 效果测试搭建步骤: UserDetailsService 身份认证 7.4 自定义用户认证public Customer getCustomer(String username) Customer customer=null; Object o = redisTemplate.opsForValue
22、().get(customer_+username); if(o!=null) customer=(Customer)o; else customer = customerRepository.findByUsername(username); if(customer!=null) redisTemplate.opsForValue().set(customer_+username,customer); return customer;CustomerServiceCustomerService业务处理类,用来通过用户名获取用户及权限信息业务处理类,用来通过用户名获取用户及权限信息,参考代码如
23、下,参考代码如下 定义查询用户及角色信息的服务接口 UserDetailsService 身份认证 7.4 自定义用户认证public List getCustomerAuthority(String username) List authorities=null; Object o = redisTemplate.opsForValue().get(authorities_+username); if(o!=null) authorities=(List)o; else authorities=authorityRepository.findAuthoritiesByUsername(use
24、rname); if(authorities.size()0) redisTemplate.opsForValue().set(authorities_+username,authorities); return authorities; 定义查询用户及角色信息的服务接口 UserDetailsService 身份认证 7.4 自定义用户认证UserDetailsService是Security提供的进行认证用户信息封装的接口,该接口提供的loadUserByUsername(String s)方法用于通过用户名加载用户信息。使用UserDetailsService进行身份认证的时,自定义一个
25、UserDetailsService接口的实现类,通过loadUserByUsername(String s)方法调用用户业务处理类中已有的方法进行用户详情封装,返回一个UserDetails封装类,来供Security认证使用。 定义UserDetailsService用于封装认证用户信息 UserDetailsService 身份认证 7.4 自定义用户认证自定义一个接口实现类自定义一个接口实现类UserDetailsServiceImplUserDetailsServiceImpl进行用户认证信息进行用户认证信息UserDetailsServiceUserDetailsService封装
展开阅读全文