深入浅出SpringSecuritypdf下载pdf下载

深入浅出SpringSecurity百度网盘pdf下载

作者:
简介:本篇主要提供深入浅出SpringSecuritypdf下载
出版社:清华大学出版社
出版时间:2021-01
pdf下载价格:9.00¥


预览


内容介绍

产品特色

内容简介

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 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月