Spring Security实战
  • 推荐2
  • 收藏8
  • 浏览5.7K

Spring Security实战

陈木鑫 (作者)  安娜 (责任编辑)

  • 书  号:ISBN 978-7-121-37143-1
  • 出版日期:2019-08-20
  • 页  数:296
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:安娜
Spring Security 是一个强大且高度可定制的安全框架,致力于为Java 应用提供身份认证和授权。
本书通过4 部分内容由浅入深地介绍了Spring Security 的方方面面。第1 部分主要讲解Spring Security的基本配置;第2 部分剖析Web 项目可能遇到的安全问题,并讲解如何使用Spring Security 进行有效防护;第3 部分详细介绍OAuth,并使用Spring Social 整合Spring Security,实现QQ 快捷登录;第4 部分重点介绍Spring Security OAuth 框架,剖析Spring Security OAuth 的部分核心源码。
本书适合有一定Java 基础的读者,以及希望在项目中应用Spring Security 的开发人员阅读。
包含Spring Security Java配置、Spring Security安全防护和源码导读。
详细讲解OAuth2实战,并简单剖析部分OAuth2核心源码。
陈木鑫,热爱编码,信奉知识沉淀的力量,平常多有关注前沿技术栈,包括但不限于前后端技术、DevOps、Serverless等,近期主要从事IM平台的研发。
前言

Spring Security 的前身是Acegi Security,在被收纳为Spring 子项目后正式更名为SpringSecurity。在笔者成书时,Spring Security 已经升级到5.1.3.RELEASE 版本,不仅新增了原生OAuth框架,还支持更加现代化的密码加密方式。可以预见,在Java 应用安全领域,Spring Security会成为首先被推崇的安全解决方案。

虽然Spring Security 有强大的功能,但它同时也有很高的学习成本。它囊括了身份认证的各种应用场景以及Web 安全的大量知识,仅官方参考手册就有数十万字,并且还省略了诸多实现细节。许多开发人员在面对这样的“庞然大物”时无从入手,更因为对其不够了解而在实际项目中不敢轻易采用。

本书由浅入深、抽丝剥茧地讲解了Spring Security 的典型应用场景,另外,还分析了部分核心源码,以及许多开发语言之外的安全知识。通过本书,读者不仅可以学习如何应用SpringSecurity,还可以学习借鉴它的实现思路,以将这种实现思路应用到其他开发场景中。

本书读者
本书主要面向有一定Java 基础的读者,以及希望在实际项目中应用Spring Security 的开发人员。

本书内容
本书共分为4 个部分。
第1 部分(第1 章至第3 章)主要介绍Spring Security 的基本配置,包括默认配置、简单表单认证,以及基于数据库模型的认证与授权。

第2 部分(第4 章至第11 章)主要介绍各种定制化的配置场景,剖析Web 项目可能遇到的安全问题,并讲解如何使用Spring Security 进行有效防护,部分章节还配备了详细的源码导读。

第3 部分(第13 章)将登录用户的数据来源从系统内转移到社交平台,详细介绍了OAuth,并使用Spring Social 整合Spring Security,实现QQ 快捷登录,满足一般性的项目需求。

第4 部分(第14 章)带领读者认识Spring Security OAuth 框架,并基于该框架完整实现了OAuth 客户端、OAuth 授权服务器以及OAuth 资源服务器三种角色。除此之外,还简单剖析了Spring Security OAuth 的部分核心源码,以帮助读者更好地理解OAuth 框架。

致谢
首先感谢赵召同学(Andy)对第4 部分的贡献。笔者在Gitter 发言表明会写一本关于SpringSecurity 的中文书后,赵召同学找到了我,并希望与我一起写作,但由于这本书实际上已基本成型,所以赵召同学贡献了第4 部分,使得本书内容更加充实,再次感谢赵召同学的贡献。其次也非常感谢博文视点公司的安娜编辑以及身边的朋友给予的鼓励。从下定决心编写这本书开始,笔者其实经历了非常多的折磨,不管是思路的枯竭还是耐心的消磨,都致使笔者几次三番萌生退,但最终还是在不断的鼓励声中坚持了下来,成功为国内希望学习SpringSecurity 的朋友奉上了一本中文版的教程,这份收获也应当属于他们。
陈木鑫

目录

第1 部分
第1 章 初识Spring Security 2
1.1 Spring Security 简介 2
1.2 创建一个简单的Spring Security 项目 4

第2 章 表单认证 . 10
2.1 默认表单认证 10
2.2 自定义表单登录页 13

第3 章 认证与授权 19
3.1 默认数据库模型的认证与授权 19
3.1.1 资源准备 . 19
3.1.2 资源授权的配置 . 20
3.1.3 基于内存的多用户支持 . 22
3.1.4 基于默认数据库模型的认证与授权 22
3.2 自定义数据库模型的认证与授权 27
3.2.1 实现UserDetails 27
3.2.2 实现UserDetailsService 31

第2 部分
第4 章 实现图形验证码 . 36
4.1 使用过滤器实现图形验证码 36
4.1.1 自定义过滤器 . 36
4.1.2 图形验证码过滤器 . 39
4.2 使用自定义认证实现图形验证码 44
4.2.1 认识AuthenticationProvider . 44
4.2.2 自定义AuthenticationProvider . 47
4.2.3 实现图形验证码的AuthenticationProvider . 53

第5 章 自动登录和注销登录 59
5.1 为什么需要自动登录 59
5.2 实现自动登录 60
5.3 注销登录 69

第6 章 会话管理 . 75
6.1 理解会话 75
6.2 防御会话固定攻击 76
6.3 会话过期 78
6.4 会话并发控制 79
6.5 集群会话的缺陷 93
6.6 集群会话的解决方案 94
6.7 整合Spring Session 解决集群会话问题 . 95

第7 章 密码加密 . 98
7.1 密码安全的重要性 98
7.2 密码加密的演进 98
7.3 Spring Security 的密码加密机制 102

第8 章 跨域与CORS 105
8.1 认识跨域 105
8.2 实现跨域之JSONP 106
8.3 实现跨域之CORS . 108
8.4 启用Spring Security 的CORS 支持 . 110

第9 章 跨域请求伪造的防护 . 113
9.1 CSRF 的攻击过程 113
9.2 CSRF 的防御手段 114
9.3 使用Spring Security 防御CSRF 攻击 115

第10 章 单点登录与CAS 125
10.1 单点登录 125
10.2 认识CAS . 129
10.3 搭建CAS Server 130
10.4 用Spring Security 实现CAS Client 138

第11 章 HTTP 认证 . 144
11.1 HTTP 基本认证 . 144
11.2 HTTP 摘要认证 . 145
11.2.1 认识HTTP 摘要认证 145
11.2.2 Spring Security 对HTTP 摘要认证的集成支持 146
11.2.3 编码实现 . 148

第12 章 @EnableWebSecurity 与过滤器链机制 . 151
12.1 @EnableWebSecurity . 151
12.2 WebSecurityConfiguration . 152

第3 部分
第13 章 用Spring Social 实现OAuth 对接 . 162
13.1 OAuth 简介 . 162
13.1.1 什么是OAuth 162
13.1.2 OAuth 的运行流程 164
13.2 QQ 互联对接准备 168
13.2.1 申请QQ 互联应用 169
13.2.2 QQ 互联指南 . 170
13.2.3 回调域名准备 . 174
13.3 实现QQ 快捷登录 . 176
13.3.1 引入Spring Social . 176
13.3.2 新增OAuth 服务支持的流程 . 178
13.3.3 编码实现 . 179
13.4 与Spring Security 整合 . 192
13.5 Spring Social 源码分析 194
13.5.1 SocialAuthenticationFilter . 194
13.5.2 OAuth2AuthenticationService . 195
13.5.3 OAuth2Connection 196
13.5.4 OAuth2Template 198
13.5.5 SocialAuthenticationProvider 199
13.5.6 JdbcUsersConnectionRepository . 200
13.6 配置相关 200

第4 部分
第14 章 用Spring Security OAuth 实现OAuth 对接 . 206
14.1 实现GitHub 快捷登录 207
14.2 用Spring Security OAuth 实现QQ 快捷登录 210
14.2.1 OAuth 功能扩展流程 210
14.2.2 编码实现 . 212
14.2.3 自定义login.html 和index.html . 223
14.2.4 自定义Controller 映射 . 224
14.2.5 启用自定义登录页 . 225
14.3 OAuth Client 功能核心源码分析 226
14.3.1 OAuth2AuthorizationRequestRedirectFilter . 227
14.3.2 OAuth2LoginAuthenticationFilter . 228
14.3.3 DefaultLoginPageGeneratingFilter 230
14.3.4 OAuth2LoginAuthenticationProvider 231
14.4 Spring Security OAuth 授权服务器 . 232
14.4.1 功能概述 . 233
14.4.2 依赖包说明 . 233
14.4.3 编码实现 . 234
14.5 OAuth 授权服务器功能扩展和自定义配置 . 236
14.5.1 自定义配置的授权服务器 237
14.5.2 编写OAuth 客户端 . 247
14.5.3 使用JDBC 存储OAuth 客户端信息 . 248
14.5.4 使用JDBC 存储token 254
14.5.5 其他功能配置 . 255
14.6 实现OAuth 资源服务器 255
14.6.1 依托于授权服务器的资源服务器 256
14.6.2 独立的资源服务器 . 258
14.7 Spring Security OAuth 核心源码分析 . 263
14.7.1 授权服务器核心源码分析 264
14.7.2 资源服务器核心源码分析 271

读者评论

  • 刚学,没代码看不下去。评论中看到作者新提交的代码了:https://github.com/blurooo/spring-security-demo

    jybroadv发表于 2022/12/11 9:45:49
  • 是很烂这本书

    hoaringtiger发表于 2022/5/11 9:40:13
  • 我觉得书非常的好
    源码不全就不能一边看书一边看springboot中的源码吗?
    把源码全部贴出来,这样一本书厚的一塌糊涂,看的**都减少了

    元气发表于 2022/1/23 19:11:02
  • 刚被这本书毒害完奉劝早早跑路换一本书看

    bfzgsz发表于 2021/6/6 21:14:29
  • 这书莫名其妙省略一堆关键代码,关键是还过时了,完全不建议购买

    bfzgsz发表于 2021/6/6 21:14:10

相关图书

最强iOS和macOS安全宝典

Jonathan Levin (作者) 郑旻 (译者)

《最强iOS和macOS安全宝典》以苹果操作系统的安全为主题,主要面向苹果高级用户、系统管理员、安全研究人员和黑客。<br>本书主要分三个部分:第一部分重点介绍...

¥179.00

极限黑客攻防:CTF赛题揭秘

王新辉 天融信阿尔法实验室 张黎元 郭勇生 (作者)

CTF在网络安全领域特指网络安全技术人员之间进行技术竞技的一种比赛。CTF代替了以往黑客通过互相发起真实攻击进行技术比拼的方式,题目来自日常工作环境,并将其中的...

¥99.00

大型互联网企业安全架构

石祖文 (作者)

本书全面阐述了新一代安全理论与安全架构,并结合作者自身经验层层剖析了包括Google 公司在内的各大互联网企业所应用的各种关键安全技术的原理及具体实现。全书分为...

¥55.30

Android软件安全权威指南

丰生强 (作者)

本书从平台搭建和语言基础开始,循序渐进地讲解了Android平台上的软件安全技术,提供了对Windows、Linux、macOS三个平台的支持,涉及与Andro...

 

加密与解密(第4版)

段钢 (作者)

本书以软件逆向为切入点,讲述了软件安全领域相关的基础知识和技能。读者阅读本书后,很容易就能在逆向分析、漏洞分析、安全编程、病毒分析等领域进行扩展。这些知识点的相...

¥198.00

Kali Linux大揭秘

(美国)Raphael Hertzog,(美国)Jim O'Gorman (作者) 诸葛建伟 (译者)

Kali Linux是设计用于数字取证和渗透测试的操作系统,本书是官方出版的仅有的一本著作。讲述了如何上手、配置、安全加固、自定义、安全评估等概念。<br>在本...

¥59.00