• 了解Spring Security解决了哪些问题?
  • 学习自动配置的Spring Security

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

Spring Security对Web安全性的支持大量地依赖于Servlet过滤器。这些过滤器拦截进入请求,并且在应用程序处理该请求之前进行某些安全处理。 Spring Security提供有若干个过滤器,它们能够拦截Servlet请求,并将这些请求转给认证和访问决策管理器处理,从而增强安全性。

练习

在WebSecurityConfig.java文件中补充代码,使登录功能可以正常使用。
https://github.com/zxy18042236/spring-security-base.git
image.png
image.png

主观作业内容

学习完上述资料,请简述Spring Security的作用?以及Spring Security的认证过程?
作用:
spring security 是基于 spring 的一个安全框架,支持用户认证,用户授权。
认证方式有 http 基本认证,http 表单认证,http 摘要认证,openid 和 ldap 等。
授权方式是基于角色的访问控制和访问控制列表。
任务卡1:简单配置和使用Spring Security - 图3
一个认证过程,其实就是过滤器链上的一个绿色矩形Filter所要执行的过程。
基本的认证过程有三步骤:

  1. Filter拦截请求,生成一个未认证的Authentication,交由AuthenticationManager进行认证;
  2. AuthenticationManager的默认实现ProviderManager会通过AuthenticationProvider对Authentication进行认证,其本身不做认证处理;
  3. 如果认证通过,则创建一个认证通过的Authentication返回;否则抛出异常,以表示认证不通过。

要理解这个过程,可以从类UsernamePasswordAuthenticationFilter,ProviderManager,DaoAuthenticationProvider和InMemoryUserDetailsManager(UserDetailsService实现类,由UserDetailsServiceAutoConfiguration默认配置提供)进行了解。只要创建一个含有spring-boot-starter-security的springboot项目,在适当地打上断点接口看到这个流程。
https://www.jb51.net/article/179631.htm
https://www.cnblogs.com/ymstars/p/10626786.html