第1 部分
! s; u# f8 [) i! {8 z: Z第1 章 初识Spring Security 2/ a/ u" q+ Y& W+ t+ L5 @+ _
1.1 Spring Security 简介 2
9 K7 H6 A/ X, h: A6 A* w; E1.2 创建一个简单的Spring Security 项目 4
' f& J7 Q; c7 z [( M" y5 P- ?% q9 W/ ]. d
第2 章 表单认证 . 10
; u' s3 S2 @$ T. I) m$ H1 O" V: x2.1 默认表单认证 10' v' _/ M! l$ t5 B, u! P
2.2 自定义表单登录页 137 l! U0 q. [( @ N5 M
* j. p) j) t2 v" N7 Z4 p e
第3 章 认证与授权 19
( D- [# [& V0 I: r# ]7 L3.1 默认数据库模型的认证与授权 19
1 S7 I- R7 g! q+ @3.1.1 资源准备 . 19
0 [( F6 U' i7 {# i3.1.2 资源授权的配置 . 208 Z0 W) W& Q+ ^4 n$ ^+ [! Z9 z
3.1.3 基于内存的多用户支持 . 222 Y( @! L, n; a8 P
3.1.4 基于默认数据库模型的认证与授权 22
* R# I0 N: l1 L; q3.2 自定义数据库模型的认证与授权 270 @) T$ H* C( N0 g2 a7 K1 C _2 K
3.2.1 实现UserDetails 27. M( o$ ?! v% u. _# D% }
3.2.2 实现UserDetailsService 31! I+ Y! @) r; k
Q0 K2 f. h$ u& I7 c6 L$ H/ t第2 部分
) `" F6 I( g4 k- z6 m第4 章 实现图形验证码 . 369 G3 P9 w; n8 c% D$ e' n
4.1 使用过滤器实现图形验证码 36' p0 F# ~$ z) Q$ L' _3 s
4.1.1 自定义过滤器 . 36
0 ]( g) }+ x9 N* K, [, P4.1.2 图形验证码过滤器 . 39
, {- ]2 x2 P/ b, o) {- b8 S$ f4.2 使用自定义认证实现图形验证码 44
! ~) X7 z% Y5 y9 u" L- e4.2.1 认识AuthenticationProvider . 448 a+ J6 D, W. |3 n0 S" o
4.2.2 自定义AuthenticationProvider . 47
/ W" y, B; `% h5 [ q" J+ m0 J' H4.2.3 实现图形验证码的AuthenticationProvider . 53
* g* d E9 W* \& E2 D7 C
0 ]) a- q) [, t1 {# W$ `9 X第5 章 自动登录和注销登录 59/ [0 E$ Z3 S' X" P9 a
5.1 为什么需要自动登录 59
3 p5 q1 ~% J7 a. z' I' L7 z5.2 实现自动登录 60
/ m- g9 e( L% P$ P" K% {5.3 注销登录 69' D( L. }2 Q) b+ a) U& f
4 g# [9 F8 H! F/ z第6 章 会话管理 . 75& A6 |; F* h4 D" n7 r) x
6.1 理解会话 75
: y x* w" ~4 P" J* u% {* U6.2 防御会话固定攻击 76- D( U2 _ \0 v$ _$ L# h5 S- |
6.3 会话过期 78 t. e$ \/ q p5 n# O
6.4 会话并发控制 79% |$ q0 H9 Z$ Z& S6 `
6.5 集群会话的缺陷 93: {$ E' d2 u2 ?0 `8 d
6.6 集群会话的解决方案 94
V" U8 q ?! A8 w7 t/ W6.7 整合Spring Session 解决集群会话问题 . 95
; q& a- c) H: L4 x: v
% G( F' a# v2 n3 t$ V第7 章 密码加密 . 98
0 b1 ? v( m- U2 x( M; g0 p7.1 密码安全的重要性 98
0 c/ x; Q! ^0 e! v0 s7.2 密码加密的演进 98
4 z3 k- j/ R5 e4 q. G! w4 i0 R9 p7.3 Spring Security 的密码加密机制 102' `) k* r* u+ P. D
- U0 ^/ u/ t$ h. c9 T: [& {9 H! U第8 章 跨域与CORS 105
( e6 Q0 _" J; x1 n$ d0 ]8.1 认识跨域 105& D* ^' z* ]5 y O' b
8.2 实现跨域之JSONP 106
% r* @/ Z2 U: w# o. z0 ^ Z. ~$ A8.3 实现跨域之CORS . 108+ K1 V- W, {# n6 q
8.4 启用Spring Security 的CORS 支持 . 110/ R# e" [7 T+ X0 a
+ k. X8 Z% H7 |, a第9 章 跨域请求伪造的防护 . 113% |6 t$ T* W3 S
9.1 CSRF 的攻击过程 113 }# ~+ u4 ]$ u8 ]( Z0 j
9.2 CSRF 的防御手段 114+ q3 d( d! J- l
9.3 使用Spring Security 防御CSRF 攻击 115
. r+ S! V/ t; `' J- a# n9 Q, H
* z1 l2 K9 d+ ] e" A7 A* T第10 章 单点登录与CAS 125
2 @+ Z2 c( t* }+ i8 c2 W: S% J1 ~10.1 单点登录 125
$ e. k6 y, a: S% _10.2 认识CAS . 129
: ?0 P r H6 d$ K$ `: l( x10.3 搭建CAS Server 1301 z c% D0 g2 U8 G" C) F4 i
10.4 用Spring Security 实现CAS Client 138
9 }8 L9 G+ ~5 W
* Q/ u5 Q! n* I' W第11 章 HTTP 认证 . 144
3 S: y) A, {1 d11.1 HTTP 基本认证 . 144% _' R1 l3 Q9 H/ Q
11.2 HTTP 摘要认证 . 1454 W) w/ ]. Q9 @5 ?8 `- x4 H7 m' p
11.2.1 认识HTTP 摘要认证 145
5 o) [) z7 f: q9 E" s11.2.2 Spring Security 对HTTP 摘要认证的集成支持 146! `( r& O: W& H, ^, g) J) z
11.2.3 编码实现 . 148
" {3 r. t% H8 X' e- i( I
( a! Z b; v: L4 F- \; ]* i; `; r第12 章 @EnableWebSecurity 与过滤器链机制 . 151* D' F9 A* Y9 B' ]
12.1 @EnableWebSecurity . 151
! [ F4 w! z8 _7 r0 G12.2 WebSecurityConfiguration . 152/ v/ `* C1 ~' u, y
4 N9 b1 i) i. Z2 Q第3 部分
" q0 l( x- W* u8 e! N$ n第13 章 用Spring Social 实现OAuth 对接 . 1629 u" [9 q' M5 _, S0 h
13.1 OAuth 简介 . 1623 J& [/ F" S6 y- J" Z z
13.1.1 什么是OAuth 162
5 S% [7 l$ }5 N4 B! j" l3 q13.1.2 OAuth 的运行流程 164* ]( W S8 L& W8 K
13.2 QQ 互联对接准备 168
- g% {" d, k( N13.2.1 申请QQ 互联应用 1698 m$ p8 q5 q- y2 A9 Z6 c4 q0 Q9 _0 c# w5 _
13.2.2 QQ 互联指南 . 1700 |) h0 g3 ~, B; I/ u0 f
13.2.3 回调域名准备 . 174
9 @3 g- ?8 X$ _' I* v% |: D6 V13.3 实现QQ 快捷登录 . 176
2 ^ E. R3 Y9 ]- V* {. _13.3.1 引入Spring Social . 176+ M# T2 @+ I G0 @/ B! i6 I4 q4 [8 R
13.3.2 新增OAuth 服务支持的流程 . 178, b& W, n" ?" _3 C
13.3.3 编码实现 . 179% j7 n# @0 Y" }4 K' O, I4 t% ]1 p
13.4 与Spring Security 整合 . 1921 T2 ^; G2 K& r/ U e6 `3 m
13.5 Spring Social 源码分析 194
% G, ]: m3 l+ `; B13.5.1 SocialAuthenticationFilter . 194
2 k& z. r2 W/ D! F; N6 Y13.5.2 OAuth2AuthenticationService . 1953 t# X# h& l& I# U) H
13.5.3 OAuth2Connection 196
) l9 P8 n( z5 {13.5.4 OAuth2Template 198" t) f8 b3 e" f! p
13.5.5 SocialAuthenticationProvider 199- I3 D0 W, d: d/ H6 C& U" h
13.5.6 JdbcUsersConnectionRepository . 2002 e' @4 ?3 P7 d% ^6 i5 K
13.6 配置相关 200" N( L5 Q1 {0 B/ P
, Z6 a2 S* O* Y5 ?/ P+ D
第4 部分3 L, \+ g5 O; [, c6 N3 Y
第14 章 用Spring Security OAuth 实现OAuth 对接 . 206
& l2 R8 e X, f, z$ w6 z14.1 实现GitHub 快捷登录 207
9 \+ j* W4 B% F6 w& I* t14.2 用Spring Security OAuth 实现QQ 快捷登录 2108 U( o1 ^5 t* e0 v; [+ A
14.2.1 OAuth 功能扩展流程 210/ x3 _" h2 s5 r: |# w* r: c
14.2.2 编码实现 . 212
. ]* t. X* Q' k14.2.3 自定义login.html 和index.html . 223* q$ ?: D g, }9 W) ^) I. k6 t
14.2.4 自定义Controller 映射 . 224' F; ~3 I) S5 R8 r; V! W
14.2.5 启用自定义登录页 . 2259 c. {* @- r' v( ^3 O: h) n# J
14.3 OAuth Client 功能核心源码分析 226* a' _% S3 j0 H% D+ o/ j
14.3.1 OAuth2AuthorizationRequestRedirectFilter . 227- k0 x/ Z2 U- s( k/ m; M
14.3.2 OAuth2LoginAuthenticationFilter . 228( d$ K6 f, u i' ?
14.3.3 DefaultLoginPageGeneratingFilter 2305 k' }4 r0 J# R6 E
14.3.4 OAuth2LoginAuthenticationProvider 231' f1 x$ e+ n4 L+ Y& n
14.4 Spring Security OAuth 授权服务器 . 232. X& v0 z3 x$ ~5 X
14.4.1 功能概述 . 233
" R3 n6 s" F K' i14.4.2 依赖包说明 . 2331 N4 B# f! ^, s- w( Y# a5 _
14.4.3 编码实现 . 234
& F. o6 A/ X9 N3 N \ d* u14.5 OAuth 授权服务器功能扩展和自定义配置 . 236& c$ y6 g' h4 P5 l) }5 g. l P
14.5.1 自定义配置的授权服务器 237
7 K }/ F8 Z( o* ^14.5.2 编写OAuth 客户端 . 2476 X; N s/ V8 V' L! y1 m
14.5.3 使用JDBC 存储OAuth 客户端信息 . 248 |; F5 f l( i' B
14.5.4 使用JDBC 存储token 254
4 c* e0 I; c3 X6 j. `# F2 m% {* D) O14.5.5 其他功能配置 . 255 java8.com9 a( i$ p0 @) K
14.6 实现OAuth 资源服务器 255; C7 b/ p& I0 M. E+ B
14.6.1 依托于授权服务器的资源服务器 256
0 L2 Z' Q/ G4 e+ ^9 r14.6.2 独立的资源服务器 . 258
; J5 ?! F2 Z: h14.7 Spring Security OAuth 核心源码分析 . 263
+ r. z0 {) R/ p4 s14.7.1 授权服务器核心源码分析 264
: i2 \( |9 i2 V- X7 C( P14.7.2 资源服务器核心源码分析 271
( Z; A' M2 B, j# [$ W