深入浅出Spring Security
作者:王松
出版时间:2021年版
内容简介
Spring Security是Java企业级开发中常用的安全管理框架,也能完美支持OAuth2。同时,Spring Security作为Spring家族的一员,与Spring Boot、Spring Cloud等框架整合使用也非常方便。
本书分为15章,讲解Spring Security框架、认证、认证流程分析、过滤器链分析、密码加密、RememberMe、会话管理、HttpFirewall、漏洞保护、HTTP认证、跨域问题、异常处理、权限管理、权限模型、OAuth2等内容。本书致力于让读者在学会Spring Security用法的同时,也能通过阅读源码来理解它的实现原理。
本书适合具有Spring Boot基础的读者、Java企业应用开发工程师,也适合作为高等院校和培训机构计算机相关专业师生的教学参考书。
目录
第1章 Spring Security架构概览 1
1.1 Spring Security简介 1
1.2 Spring Security核心功能 2
1.2.1 认证 3
1.2.2 授权 3
1.2.3 其他 3
1.3 Spring Security整体架构 4
1.3.1 认证和授权 4
1.3.2 Web安全 6
1.3.3 登录数据保存 9
1.4 小结 9
第2章 Spring Security认证 10
2.1 Spring Security基本认证 10
2.1.1 快速入门 10
2.1.2 流程分析 11
2.1.3 原理分析 12
2.2 登录表单配置 19
2.2.1 快速入门 19
2.2.2 配置细节 23
2.3 登录用户数据获取 39
2.3.1 从SecurityContextHolder中获取 41
2.3.2 从当前请求对象中获取 59
2.4 用户定义 64
2.4.1 基于内存 64
2.4.2 基于JdbcUserDetailsManager 65
2.4.3 基于MyBatis 68
2.4.4 基于Spring Data JPA 74
2.5 小结 77
第3章 认证流程分析 78
3.1 登录流程分析 78
3.1.1 AuthenticationManager 78
3.1.2 AuthenticationProvider 79
3.1.3 ProviderManager 86
3.1.4 AbstractAuthenticationProcessingFilter 89
3.2 配置多个数据源 94
3.3 添加登录验证码 95
3.4 小结 99
第4章 过滤器链分析 100
4.1 初始化流程分析 100
4.1.1 ObjectPostProcessor 101
4.1.2 SecurityFilterChain 102
4.1.3 SecurityBuilder 103
4.1.4 FilterChainProxy 117
4.1.5 SecurityConfigurer 120
4.1.6 初始化流程分析 128
4.2 ObjectPostProcessor使用 136
4.3 多种用户定义方式 137
4.4 定义多个过滤器链 141
4.5 静态资源过滤 144
4.6 使用JSON格式登录 146
4.7 添加登录验证码 150
4.8 小结 152
第5章 密码加密 153
5.1 密码为什么要加密 153
5.2 密码加密方案进化史 154
5.3 PasswordEncoder详解 154
5.3.1 PasswordEncoder常见实现类 155
5.3.2 DelegatingPasswordEncoder 156
5.4 实战 159
5.5 加密方案自动升级 161
5.6 是谁的PasswordEncoder 166
5.7 小结 168
第6章 RememberMe 169
6.1 RememberMe简介 169
6.2 RememberMe基本用法 170
6.3 持久化令牌 172
6.4 二次校验 174
6.5 原理分析 176
6.6 小结 189
第7章 会话管理 190
7.1 会话简介 190
7.2 会话并发管理 191
7.2.1 实战 191
7.2.2 原理分析 194
7.3 会话固定攻击与防御 206
7.3.1 什么是会话固定攻击 206
7.3.2 会话固定攻击防御策略 207
7.4 Session共享 208
7.4.1 集群会话方案 208
7.4.2 实战 210
7.5 小结 212
第8章 HttpFirewall 213
8.1 HttpFirewall简介 213
8.2 HttpFirewall严格模式 215
8.2.1 rejectForbiddenHttpMethod 216
8.2.2 rejectedBlacklistedUrls 217
8.2.3 rejectedUntrustedHosts 218
8.2.4 isNormalized 219
8.2.5 containsOnlyPrintableAsciiCharacters 220
8.3 HttpFirewall普通模式 220
8.4 小结 221
第9章 漏洞保护 222
9.1 CSRF攻击与防御 222
9.1.1 CSRF简介 222
9.1.2 CSRF攻击演示 223
9.1.3 CSRF防御 224
9.1.4 源码分析 231
9.2 HTTP响应头处理 237
9.2.1 缓存控制 239
9.2.2 X-Content-Type-Options 240
9.2.3 Strict-Transport-Security 241
9.2.4 X-Frame-Options 244
9.2.5 X-XSS-Protection 245
9.2.6 Content-Security-Policy 246
9.2.7 Referrer-Policy 248
9.2.8 Feature-Policy 249
9.2.9 Clear-Site-Data 249
9.3 HTTP通信安全 250
9.3.1 使用HTTPS 250
9.3.2 代理服务器配置 253
9.4 小结 254
第10章 HTTP认证 255
10.1 HTTP Basic authentication 255
10.2 HTTP Digest authentication 260
10.3 小结 268
第11章 跨域问题 269
11.1 什么是CORS 269
11.2 Spring处理方案 270
11.3 Spring Security处理方案 274
11.4 小结 279
第12章 异常处理 280
12.1 Spring Security异常体系 280
12.2 ExceptionTranslationFilter原理分析 281
12.3 自定义异常配置 287
12.4 小结 290
第13章 权限管理 291
13.1 什么是权限管理 291
13.2 Spring Security权限管理策略 292
13.3 核心概念 292
13.4 基于URL地址的权限管理 305
13.5 基于方法的权限管理 325
13.6 小结 338
第14章 权限模型 339
14.1 常见的权限模型 339
14.2 ACL 340
14.3 RBAC 354
14.4 小结 357
第15章 OAuth2 358
15.1 OAuth2简介 358
15.2 OAuth2四种授权模式 359
15.3 Spring Security OAuth2 364
15.4 GitHub授权登录 365
15.5 授权服务器与资源服务器 379
15.6 使用Redis 397
15.7 客户端信息存入数据库 399
15.8 使用JWT 401
15.9 小结 406