前言
当前互联网行业飞速发展,快速的业务更新和产品迭代给系统开发过程和模式带来新的挑战。一般而言,日常开发过程中所涉及的业务系统或多或少都会有安全性相关的技术需求。从零开始构建安全性技术体系,并且做到没有安全漏洞并不是一件容易的事情。这时候就需要引入专业的安全性开发框架。而在Java领域中,Spring Security是应用非常广泛的一个开发框架,也是Spring家族中历史比较悠久的一个框架。Spring Security在日常开发过程中不仅可以与Spring Boot等框架无缝集成,而且它也是Spring Cloud等综合性开发框架的底层基础框架之一。Spring Security的功能完备且强大。
本书主要介绍基于 Spring Security 构建系统安全性的技术体系和工程实践。围绕安全性需求,讨论Spring Security框架所提供的各项解决方案,并基于框架所提供的核心功能构建三个完整的案例系统。本书内容在组织结构上分为5篇,共计16章。
-
第1章从常见安全性需求出发,引出Spring Security框架的整体定位和安全解决方案。这一章作为开篇总领全书后续章节。
-
第2章首先介绍Spring Security内置的认证机制,包括HTTP基础认证和表单登录认证。其次讨论了与认证机制相关的用户信息存储方案和用户对象。最后给出了定制化用户认证方案的实现过程。
-
第3章分析了Spring Security中的权限和角色,并给出了基于配置方法控制访问权限的实现方法。同时对Spring Security的授权流程实现原理进行了深入分析。
-
第4章讲解了 Spring Security 中密码编码器的抽象过程和内置实现方案。同时分析了Spring Security的独立加密模块,该模块提供了通用的加解密器和键生成器。
-
第5章通过一个完整案例介绍了设计并开发一套自定义用户认证体系的实现方案,包括如何实现用户管理、认证流程和安全配置等。
-
第6章详细剖析了Spring Security所具备的过滤器架构,并提供了自定义过滤器的实现机制。同时分析了Spring Security目前已经内置的过滤器。
-
第7章分析了基于Spring Security提供CSRF保护和实现CORS的开发流程,这两种技术体系都基于第6章介绍的过滤器机制实现。
-
第8章分析了面向非Web应用程序的全局方法安全机制,并通过注解分别实现了方法级别授权和方法级别过滤。
-
第9章通过案例介绍了安全认证领域常见的多因素认证机制,包括用户名/密码认证,以及用户名/授权码认证。
-
第10章全面介绍了OAuth2协议的应用场景、角色、令牌(token)以及内置的授权模式。同时基于Spring Security构建了OAuth2授权服务器。
-
第11章介绍了OAuth2协议与微服务架构进行集成的系统方法,并基于OAuth2协议在微服务中嵌入了三种不同粒度的访问授权控制。
-
第12章介绍了JWT的基本结构和优势以及与OAuth2协议的整合过程,同时讨论了基于微服务架构在服务调用链路中有效传播JWT的实现方法。
-
第13章讲解了单点登录的架构和工作流程,并基于OAuth2协议分别实现了单点登录服务器端和客户端组件。
-
第14章讲述如何设计并实现一个完整的微服务系统,包括注册中心、配置中心和服务网关等基础设施类组件,并在安全授权控制中集成和扩展了JWT。
-
第15章讲解了响应式编程和Spring框架提供的对应响应式组件。同时,围绕Spring Security给出了响应式用户认证、响应式授权机制以及响应式方法级别访问控制的实现方法。
-
第16章讲解了测试系统安全性的方法论以及Spring Security提供的测试解决方案。同时,基于Spring Security介绍了对用户、认证、方法级别安全以及CSRF和CORS配置进行测试的实现方法。
本书面向广大服务端开发人员,读者不需要有很深的技术功底,也不限于特定的开发语言,但熟悉Java EE常见技术并掌握一定系统设计基本概念将有助于更好地理解书中的内容。同时,本书也适合对安全性实现技术感兴趣的开发人员。通过本书的系统学习,读者将对Spring Security技术体系和实现机制有全面而深入的了解,为后续的工作和学习铺平道路。
在本书的撰写过程中,感谢我的家人,特别是妻子章兰婷女士在我占用大量晚上和周末时间的情况下能够给予极大的支持和理解。感谢以往及目前公司的同事。身处业界领先的公司和团队,我得到很多学习和成长的机会,没有大家的帮助,这本书不可能诞生。最后,感谢拉勾教育及人民邮电出版社异步社区的编辑团队。这本书能够顺利出版,离不开大家的帮助。
由于时间仓促,加之作者水平和经验有限,书中难免有欠妥和错误之处,恳请广大读者批评指正。
郑天民
于杭州钱江世纪城
VlWOhHaiVRroUoqO4ZCPL4ZV2kUkilYNlU872ESbNQn5PTPZr7f8czJEVKPOEJDM