独家巨献!阿里技术专家兼 Github 贡献者,整理的 Spring Security 入门到成神
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 和 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 正在走向舞台中央。
上面的文档已整理成册,有需要的读者朋友们
评论