书籍作者:王松 | ISBN:9787302572763 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2455 |
创建日期:2021-10-07 | 发布日期:2021-10-07 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
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全栈开发实战》。
前 言
安全管理是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
//省略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月
你是今生今世今生今世江苏省今年是你少男少女少男少女少男少女你少男少女你少男少女你自己做自己自己就直说
2021-03-10 21:07:29
新书的味道很浓后,一点一点慢慢看了,看后再继续在跟上评论
2021-03-10 14:40:35