本书是一本关于 Spring Security 的应用指南,主要讲解了 Spring Security 的基础知
识点、核心概念,以及围绕身份验证和授权过程的关键处理流程。书中采取了循序渐
进、示例辅助的编写方式,以期让读者能够轻松入门并且随着对本书的深入阅读而能
稳步得到技能提升,同时也逐渐加深对于 Spring Security 和身份验证以及授权过程的
理解。相信在通读并深刻理解本书的内容之后,读者就能够熟练运用 Spring Security
对应用程序的各层进行安全配置。本书提供了许多应用示例,并且根据内容结构的编
排还提供了 3 个动手实践的练习章节,这样,读者就能通过每一章的知识内容并且结
合实践练习来巩固所学知识。
本书面向使用 Spring 框架构建企业级应用程序的开发人员。每个开发人员都应该
从设计阶段就开始考虑应用程序的安全性问题。本书将讲解如何使用 Spring Security
配置应用程序级别的安全保障。使用 Spring 开发应用程序,开发人员必须了解如何正
确地使用 Spring Security,以及如何在应用程序中应用安全配置。这是非常重要的,如
果没有经过体系化的学习和实践就盲目地借助网络资源应用 Spring Security,那么所实
现的安全配置势必有所缺失,从而造成应用程序存在漏洞或造成数据泄露的严重问题。
有鉴于此,建议从事 Spring 应用程序开发的人员阅读本书并充分理解其中的内容。
安全性是没有任何商量余地的。我们要依赖Spring应用程序来传输数据、验证凭据和防止攻击。采用“通过设计实现安全防护”的原则将能够保护我们的网络避免数据被窃取和未经授权的入侵。 《Spring Security实战》展示了如何在造成破坏之前防止跨站脚本和请求伪造攻击。该书将从基础开始讲解,其中将模拟密码升级并添加多种类型的授权。随着技能的增长,读者将可以将Spring Security应用到新的架构中,并创建高级的OAuth2配置。完成之后,读者将拥有一个定制的Spring Security配置,它可以保护应用程序免受常见的和特殊的威胁。
主要内容
●对密码进行编码以及对用户进行身份验证
●端点的安全防护
●安全性测试的自动化
●设置独立的授权服务器
第Ⅰ部分 初识
第1章 安全性现状
1.1 SpringSecurity的定义与用途
1.2 什么是软件安全性
1.3 安全性为什么重要
1.4 Web应用程序中的常见安全漏洞
1.4.1 身份验证和授权中的漏洞
1.4.2 什么是会话固定
1.4.3 什么是跨站脚本(XSS)
1.4.4 什么是跨站请求伪造(CSRF)
1.4.5 理解Web应用程序中的注入漏洞
1.4.6 应对敏感数据暴露
1.4.7 缺乏方法访问控制指的是什么
1.4.8 使用具有己知漏洞的依赖项
1.5 各种架构中所应用的安全性
1.5.1 设计一个单体式Web应用程序
1.5.2 为前后端分离设计安全性
1.5.3 理解OAuth2流程
1.5.4 使用API键、加密签名和IP验证保护请求
1.6 本书知识内容
1.7 本章小结
第2章 Spring Security初探
2.1 开始构建首个项目
2.2 默认配置有哪些
2.3 重写默认配置
2.3.1 重写UserDetailsService组件
2.3.2 重写端点授权配置
2.3.3 以不同方式设置配置
2.3.4 重写AuthenticationProvider实现
2.3.5 在项目中使用多个配置类
2.4 本章小结
第Ⅱ部分 实现
第3章 管理用户
3.1 在Spring Security中实现身份验证
3.2 描述用户
3.2.1 阐明UserDetails契约的定义
3.2.2 GrantedAuthority契约详述
3.2.3 编写UserDetails的最小化实现
3.2.4 使用构造器创建UserDetails类型的实例
3.2.5 合并与用户相关的多个职能
3.3 指示Spring Security如何管理用户
3.3.1 理解UserDetailsService契约
3.3.2 实现UserDetailsService契约
3.3.3 实现UserDetailsManager契约
3.4 本章小结
第4章 密码处理
4.1 理解PasswordEncoder契约
4.1.1 PasswordEncoder契约的定义
4.1.2 实现PasswordEncoder契约
4.1.3 从PasswordEncoder提供的实现中选择
4.1.4 使用DelegatingPassword Encoder实现多种编码策略
4.2 Spring Security Crypto模块的更多知识
4.2.1 使用密钥生成器
4.2.2 将加密器用于加密和解密操作
4.3 本章小结
第5章 实现身份验证
5.1 理解AuthenticationProvider
5.1.1 在身份验证期间表示请求
5.1.2 实现自定义身份验证逻辑
5.1.3 应用自定义身份验证逻辑
5.2 使用SecurityContext
5.2.1 将一种保持策略用于安全上下文
5.2.2 将保持策略用于异步调用
5.2.3 将保持策略用于独立应用程序
5.2.4 使用DelegatingSecurity-ContextRunnable转发安全上下文
5.2.5 使用DelegatingSecurity-ContextExecutorService转发安全上下文
5.3 理解HTIP Basic和基于表单的登录身份验证
5.3.1 使用和配置HTTP Basic
5.3.2 使用基于表单的登录实现身份验证
5.4 本章小结
第6章 动手实践:一个小型且安全的Web应用程序
6.1 项目需求和设置
6.2 实现用户管理
6.3 实现自定义身份验证逻辑
6.4 实现主页面
6.5 运行和测试应用程序
6.6 本章小结
第7章 配置权限:限制访问
7.1 基于权限和角色限制访问
7.1.1 基于用户权限限制所有端点的访问
……
附录A 创建一个Spring Boot项目
——Nathan B.Crocker,Galaxy Digital
★“一座充满着知识、合理建议和实践应用的金矿。我多么希望我在几年前学习Spring Security的时候也能够拥有这样一本书。”
——Alain Lompo,ISO-Gruppe
★“为了保护Java企业应用程序免受常见的威胁和攻击,你需要了解的关于Spring Security的一切知识涵盖在书中。”
——Harinath Kuntamukkala,Cognizant Technology Solutions
★“这是Spring应用程序安全防护的指南。一本不可不读的书。”
——Ubaldo Pescatore,Generali Business Solutions