全新正版书籍,24小时发货,可开发票。
¥ 52.4 5.3折 ¥ 99 全新
库存9件
作者王松
出版社清华大学出版社
ISBN9787302572763
出版时间2021-03
装帧平装
开本16开
定价99元
货号29206993
上书时间2024-12-28
安全管理是Java应用开发中无法避免的问题,目前主流的安全管理框架就是Spring Security和Shiro,其中Shiro一直以使用简单和轻量级著称。然而,随着Spring Boot和微服务的流行,Spring Security受到越来越多开发者的重视,因为Spring Security在和Spring Boot整合时具有先天优势。
目前市面上缺少系统介绍Spring Security的书籍,网上的博客内容又比较零散,这为很多初次接触Spring Security的Java工程师学习这门技术带来诸多不便。
笔者早于个人博客上连载Spring Security系列教程,连载期间有不少读者加笔者微信讨论Spring Security的相关技术点,让笔者感受到读者对Spring Security的热情,也因此萌生了写一本技术图书来系统介绍Spring Security的想法。在朋友和家人的鼓励之下,这一想法逐步付诸实践,终完成大家现在看到的这本《深入浅出Spring Security》。
本书以Spring Security 5.3.4为基础,详细介绍Spring Security的基本用法以及相关原理。得益于Spring Boot中的自动化配置,Spring Security上手非常容易,然而这种自动化配置,也让很多初次接触Spring Security的开发者“知其然,而不知其所以然”,仅限于会用,一旦出了漏洞,或者想要定制功能时,就会不知所措。因此,在写作本书过程中,除了基本功能的Demo演示外,还对Spring Security的相关源码做了深入分析,以便读者“知其然,更知其所以然”。
学习Spring Security不仅仅是学习安全管理框架,也是一个学习各种网络攻击与防御策略的过程,Spring Security对很多常见网络攻击,如计时攻击、CSRF、XSS等,都提供了相应的防御策略,因此,我们在学习Spring Security时,也可以顺便研究一下这些常见的网络攻击,以便设计出更加安全健壮的权限管理系统。
本书分为四部分:
部分:第1章,这一部分总体介绍Spring Security架构,方便读者从整体上把握Spring Security的功能。
第二部分:第2~12章,这一部分主要介绍Spring Security中的认证功能,以及由此衍生出来的会话管理、HTTP防火墙、跨域管理等。
第三部分:第13~14章,这一部分主要介绍Spring Security中的授权功能,以及常见的权限模型ACL和RBAC。
第四部分:第15章,这一部分主要介绍OAuth2协议在Spring Security框架中的落地。
示例代码约定
为了减少代码冗余和本书篇幅,书中的所有示例代码片段都省略了package和import部分,像下面这样:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.loginProcessingUrl("/doLogin")
.defaultSuccessUrl("/index ")
.failureUrl("/login.html")
.usernameParameter("uname")
.passwordParameter("passwd")
.permitAll()
.and()
.csrf().disable();
}
}
有时候为了向读者演示代码的运行效果,一个案例可能会被反复修改多次,那么在后面展示代码时,将不再列出不变的部分,仅仅列出发生变化的代码片段,像下面这样:
@Autowired
TokenStore tokenStore;
@Autowired
JwtAccessTokenConverter jwtAccessTokenConverter;
@Bean
AuthorizationServerTokenServices tokenServices() {
DefaultTokenServices services = new DefaultTokenServices();
services.setClientDetailsService(clientDetailsService);
services.setSupportRefreshToken(true);
services.setTokenStore(tokenStore);
TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
tokenEnhancerChain
.setTokenEnhancers(Arrays.asList(jwtAccessTokenConverter));
services.setTokenEnhancer(tokenEnhancerChain);
return services;
}
//省略其他
正常情况下,这样的代码片段并不会影响大家理解本书内容。如果读者想要看到完整的代码片段,可以下载本书提供的示例代码进行对照理解。
源码省略约定
在分析Spring Security源码时,为了简化源码和篇幅以便于读者理解,源码中的日志输出、注释以及一些无关紧要的代码会被移除掉,像下面这样:
@ConfigurationProperties(prefix = "spring.security")
public class SecurityProperties {
private User user = new User();
public User getUser() {
return this.user;
}
public static class User {
private String name = "user";
private String password = UUID.randomUUID().toString();
private List<String> roles = new ArrayList<>();
//省略getter/setter
}
}
如果读者觉得这样阅读“不过瘾”,也可以下载Spring Security源码对照理解。
读者定位
阅读本书需要有一定的Spring Boot基础,对于无Spring Boot基础的读者,可以先学习Spring Boot然后再来阅读本书。学习Spring Boot,可以参考笔者编写的图书《Spring Boot Vue全栈开发实战》或者笔者的教程:http://springboot.javaboy.org。
源码获取
本书所有的示例代码均存放在GitHub上,地址如下:
https://github.com/lenve/spring-security-book-samples
所有工程均为标准的Maven工程,可以用IntelliJ IDEA或者Eclipse打开。
纠错与勘误
如果读者在阅读本书时发现错误,可以将错误提交到https://github.com/lenve/spring-security-book-samples/issues ,笔者将错误内容汇总后同步发布在http://www.javaboy.org/spring-security-book以及微信公众号“江南一点雨”。修正后的内容将在后续重印的书中得到体现。
交流社区
学无止境,笔者将继续对Spring Security的发展保持关注。关于Spring Security的变化,笔者都将发布在微信公众号“江南一点雨”上,读者关注微信公众号后,也可以进入本书微信交流群进行交流。
王松
2021年1月
Spring Security是Java企业级开发中常用的安全管理框架,也能完美支持OAuth2。同时,Spring Security作为Spring家族的一员,与Spring Boot、Spring Cloud等框架整合使用也非常方便。 本书分为15章,讲解Spring Security框架、认证、认证流程分析、过滤器链分析、密码加密、RememberMe、会话管理、HttpFirewall、漏洞保护、HTTP认证、跨域问题、异常处理、权限管理、权限模型、OAuth2等内容。本书致力于让读者在学会Spring Security用法的同时,也能通过阅读源码来理解它的实现原理。 本书适合具有Spring Boot基础的读者、Java企业应用开发工程师,也适合作为高等院校和培训机构计算机相关专业师生的教学参考书。
王松,软件开发工程师,擅长JavaEE开发,对Spring Boot、Spring Cloud微服务等技术有深入的研究。著有畅销书《Spring Boot Vue全栈开发实战》。
第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.1.1 简介 255
10.1.2 具体用法 257
10.1.3 源码分析 257
10.2 HTTP Digest authentication 260
10.2.1 简介 260
10.2.2 具体用法 261
10.2.3 源码分析 263
10.3 小结 268
第11章 跨域问题 269
11.1 什么是CORS 269
11.2 Spring处理方案 270
11.2.1 @CrossOrigin 271
11.2.2 addCorsMappings 272
11.2.3 CorsFilter 273
11.3 Spring Security处理方案 274
11.3.1 特殊处理OPTIONS请求 275
11.3.2 继续使用CorsFilter 275
11.3.3 专业解决方案 276
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.3.1 角色与权限 292
13.3.2 角色继承 294
13.3.3  
— 没有更多了 —
以下为对购买帮助不大的评价