书籍作者:陈木鑫 | ISBN:9787121371431 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:9057 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
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的部分核心源码。
陈木鑫,热爱编码,信奉知识沉淀的力量,平常多有关注前沿技术栈,包括但不限于前后端技术、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