Spring Security 介绍

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

目前市面上 Spring Security 相关的资料书籍少之又少,我翻阅了各大平台网站都没有发现真正能把 Spring Security 讲解得十分透彻,由此特意去拜访了一位老朋友,整理出了这份 Spring Security 全解,在这里我选择将它进行一个开源式的分享,大体内容如下:

觉得不错的朋友可以-公众号【不脱发有志青年】

Spring Security中的用户信息

  • Spring Security 和Apache Shiro
  • 认证/鉴权
  • 过滤器链
  • RBAC模型
  • 其他一些概念
  • Spring Boot 集成 Spring Security
  • UserDetailsServiceAutoConfiguration
  • UserDetailsService
  • UserDetails
  • UserDetailsServiceAutoConfiguration
  • 自定义UserDetailsManager
  • 数据库管理用户
  • 不推荐使用md5
  • Spring Security中的密码算法
  • Spring Security 加载 PasswordEncoder 的规则
  • bcrypt 编码算法

Spring Boot 中的 Spring Security 自动配置初探

  • Spring Boot 下 Spring Security 的自动配置
  • @EnableWebSecurity 注解
  • SecurityFilterAutoConfiguration
  • URI中的 Ant 风格
  • Spring MVC 和 Spring Security 中的 Ant 风格
  • 自定义配置类WebSecurityConfigurerAdapter
  • HttpSecurity 配置

实现自定义登录

  • form登录的流程
  • Spring Security 中的登录
  • HttpSecurity中的form表单登录
  • Spring Security聚合登录实战
  • 多种登录方式并存的实现
  • 图解认证过滤器UsernamePasswordAuthenticationFilter
  • 图解认证管理器AuthenticationManager
  • AuthenticationManager的初始化细节

Spring Security中的“分布式对象”

  • SharedObject
  • 从零手写一个验证码登录
  • 集成到Spring Security
  • 验证码认证管理器、过滤器
  • Spring Security 中的内置 Filter
  • 内置过滤器初始化、讲解
  • Spring Security中的过滤器链及其机制
  • 图解Spring Security的过滤器体系
  • Servlet Filter体系
  • GenericFilterBean
  • DelegatingFilterProxy
  • SecurityFilterChain
  • FilterChainProxy
  • 实现自定义退出登录
  • 我们使用 Spring Security 登录后都做了什么

Web无状态会话Token技术JWT

  • JWT知识扩展JOSE
  • 我们都看错了 JWT
  • 什么是 JWE
  • Spring Security jose 相关
  • 构造JWT Token生成服务
  • JWT 解码以及验证
  • spring-security-jwt
  • 构建 JWT 中的 payload
  • 生成 RSA 密钥并进行签名
  • spring-security-jwt
  • JWT 解码以及验证

实现Spring Security登录后返回JWT

  • 实现登录成功/失败返回逻辑
  • Spring Security中自定义异常处理
  • Http 状态对认证授权的规定
  • Spring Security 中的异常处理
  • Spring Security中使用 JWT 认证访问接口
  • 常用的 Http 认证方式
  • Json Web Token 的认证方式 Bearer Authentication
  • Spring Security 中实现接口 Jwt 认证
  • 定义 Json Web Token 过滤器
  • 配置 JwtAuthenticationFilter

对RBAC权限控制的理解

  • 为什么需要 RBAC?
  • RBAC 模型的分类
  • RBAC 中一些概念的理解
  • 基于配置的接口访问控制
  • 将角色写入 UserDetails
  • 在 HttpSecurity 中进行配置角色访问控制
  • permitAll 与 anonymous 的一些探讨
  • 基于注解的接口访问控制
  • Spring Security 方法安全
  • @EnableGlobalMethodSecurity 注解
  • 使用 prePostEnabled
  • 使用 jsr250Enabled
  • 使用 securedEnabled

安全上下文SecurityContext

  • SecurityContextHolder
  • 实现动态权限控制
  • 动态的权限控制同样依赖 RBAC 模型
  • 请求认证过程
  • 如何结合安全框架
  • Spring Security 提供的轮子
  • FilterSecurityInterceptor
  • FilterInvocationSecurityMetadataSource
  • AccessDecisionManager
  • AccessDecisionVoter
  • 在一个应用中实现多个安全策略
  • 如何 路由 不同的安全配置
  • 如何指定默认的HttpSecurity
  • 如何配置不同的UserDetailsService

相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更多安全控制方面的需求,特别是随着现在 Spring Boot 和 Spring Cloud 的流行,Spring Security 正在走向舞台中央

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐