
本书由张卫滨翻译,博客:http://lengyun3566.iteye.com/,新浪微博:http://weibo.com/zhangweibin1981
本书版权归原作者所有
Spring Security 3

本书由张卫滨翻译,博客:http://lengyun3566.iteye.com/,新浪微博:http://weibo.com/zhangweibin1981
本书版权归原作者所有
目录
Spring Security 3 ............................................................................................................................ 1
第一章 一个不安全应用的剖析 ........................................................................................... 8
安全审计................................................................................................................................... 9
关于样例应用 ........................................................................................................................... 9
JBCP Pets 应用的架构 ...................................................................................................... 9
应用所使用的技术 ......................................................................................................... 10
查看审计结果 ......................................................................................................................... 10
认证 ................................................................................................................................. 12
授权 ................................................................................................................................. 13
数据库认证安全 ............................................................................................................. 13
敏感信息 ......................................................................................................................... 13
数据传输层保护 ............................................................................................................. 13
使用 Spring Security 解决安全问题....................................................................................... 14
为什么使用 Spring Security? ........................................................................................ 14
小结......................................................................................................................................... 14
第二章 Spring Security 起步................................................................................................ 15
安全的核心概念 ..................................................................................................................... 16
认证 ................................................................................................................................. 16
授权 ................................................................................................................................. 17
三步之内使我们的应用变得安全 ......................................................................................... 19
实现 Spring Security 的 XML 配置文件.......................................................................... 19
添加 Spring DelegatingFilterProxy 到 web.xml 文件...................................................... 20
添加 Spring Security XML 配置文件的应用到 web.xml ................................................ 20
注意这些不足之处 ......................................................................................................... 22
常见问题 ......................................................................................................................... 23
安全的复杂之处:安全 web 请求的架构 ............................................................................ 23
请求是怎样被处理的? ................................................................................................. 24
在 auto-config 场景下,发生了什么事情? ................................................................ 27
用户是怎样认证的? ..................................................................................................... 27
请求是怎样被授权的? ................................................................................................. 33
总结......................................................................................................................................... 38
第三章 增强用户体验 ......................................................................................................... 40
自定义登录页 ......................................................................................................................... 41
实现自定义的登录页 ..................................................................................................... 41
理解退出功能 ......................................................................................................................... 45
在站点页头上添加“Log Out”链接 ............................................................................ 45
退出是怎么实现的 ......................................................................................................... 45
Remember me......................................................................................................................... 47

本书由张卫滨翻译,博客:http://lengyun3566.iteye.com/,新浪微博:http://weibo.com/zhangweibin1981
本书版权归原作者所有
实现 remember me 选项 ............................................................................................... 48
Remember me 是怎样实现的 ........................................................................................ 48
Remember me 是否安全? ............................................................................................ 52
实现修改密码管理 ................................................................................................................. 58
扩展基于内存的凭证存储以支持修改密码 ................................................................. 58
小结......................................................................................................................................... 62
第四章 凭证安全存储 ......................................................................................................... 63
使用数据库后台的 Spring Security 认证 ............................................................................... 64
配置位于数据库上的认证存储 ..................................................................................... 64
基于数据库后台的认证是如何实现的 ......................................................................... 66
实现自定义的 JDBC UserDetailsService ......................................................................... 67
基于 JDBC 的内置用户管理 ........................................................................................... 68
JdbcDaoImpl 的高级配置 ....................................................................................................... 70
配置基于组的授权 ......................................................................................................... 71
使用遗留的或用户自定义的 schame 实现基于数据库的认证 ................................... 72
配置安全的密码 ..................................................................................................................... 74
配置密码编码 ................................................................................................................. 76
你是否愿意在密码上添加点 salt? .............................................................................. 78
配置 salted 密码 ............................................................................................................. 79
增强修改密码功能 ......................................................................................................... 82
配置自定义的 salt source .............................................................................................. 82
将 Remember me 功能迁移至数据库 ................................................................................... 85
配置基于数据库的 remember me tokens ..................................................................... 85
基于数据库后台的持久化 tokens 是不是更安全? .................................................... 86
用 SSL 保护你的站点 ............................................................................................................. 87
配置 Apache Tomcat 以支持 SSL .................................................................................... 87
对站点进行自动的安全保护 ......................................................................................... 88
小结......................................................................................................................................... 90
第五章 精确的访问控制 ..................................................................................................... 92
重新思考应用功能和安全 ..................................................................................................... 93
规划应用安全 ................................................................................................................. 93
规划用户角色 ................................................................................................................. 93
规划页面级权限 ............................................................................................................. 94
实现授权精确控制的方法 ..................................................................................................... 95
使用 Spring Security 的标签库有选择地渲染内容 ....................................................... 95
使用控制器逻辑进行有条件渲染内容 ......................................................................... 98
配置页面内授权的最好方式是什么? ......................................................................... 99
保护业务层............................................................................................................................. 99
保护业务层方法的基本知识 ....................................................................................... 100
几种实现方法安全的方式 ........................................................................................... 102
方法的安全保护是怎样运行的? ....................................................................................... 105
方法安全的高级知识 ........................................................................................................... 106
使用 bean 包装类实现方法安全规则 ......................................................................... 107
包含方法参数的实现方法安全规则 ........................................................................... 108

本书由张卫滨翻译,博客:http://lengyun3566.iteye.com/,新浪微博:http://weibo.com/zhangweibin1981
本书版权归原作者所有
参数绑定是如何实现的? ........................................................................................... 108
使用基于角色的过滤保护方法的数据安全 ............................................................... 109
关于方法安全的警告 ................................................................................................... 113
小结....................................................................................................................................... 114
第六章 高级配置和扩展 ................................................................................................... 115
实现一个自定义的安全过滤器 ........................................................................................... 115
在 servlet 过滤器级别实现 IP 过滤 ............................................................................. 115
实现自定义的 AuthenticationProvider ................................................................................ 118
通过 AuthenticationProvider 实现一个简单的单点登录 ........................................... 118
连接 AuthenticationProvider ........................................................................................ 123
使用请求头模拟单点登录 ........................................................................................... 123
实现自定义 AuthenticationProviders 时要考虑的事项 .............................................. 124
Session 的管理和并发.......................................................................................................... 125
配置 session fixation 防护 ............................................................................................ 125
通过 session 的并发控制增强对用户的保护 ............................................................. 129
Session 并发控制的其它好处 ...................................................................................... 131
理解和配置异常处理 ........................................................................................................... 134
配置“Access Denied”处理........................................................................................ 134
什么会触发 AccessDeniedException ............................................................................ 136
AuthenticationEntryPoint 的重要性 ............................................................................. 137
手动配置 Spring Security 设施的 bean ............................................................................... 137
总体理解 Spring Security bean 的依赖关系 ................................................................ 137
重新配置 web 应用 ...................................................................................................... 138
配置一个最小的 Spring Security 环境 ......................................................................... 139
Spring Security 基于 bean 的高级配置 ............................................................................... 143
Session 生命周期的调整元素 ...................................................................................... 143
手动配置其它通用的服务 ........................................................................................... 144
明确配置 SpEL 表达式和投票器 ................................................................................. 148
认证事件处理 ....................................................................................................................... 149
配置认证事件的监听器 ............................................................................................... 150
大量的应用事件 ........................................................................................................... 152
构建一个自定义实现的 SpEL 表达式处理器 ..................................................................... 153
小结....................................................................................................................................... 154
第七章 访问控制列表(ACL) ......................................................................................... 155
使用访问控制列表保护业务对象 ....................................................................................... 155
Spring Security 中的访问控制列表 .............................................................................. 156
支持 Spring Security ACL 的基本配置.................................................................................. 157
定义一个简单的目标场景 ........................................................................................... 157
添加 ACL 表到 HSQL 数据库中 .................................................................................... 158
配置访问决策管理器 ................................................................................................... 160
配置 ACL 的支持 bean.................................................................................................. 161
创建一个简单的 ACL entry .......................................................................................... 164
高级 ACL 话题 ...................................................................................................................... 166
Permission 如何工作 .................................................................................................... 166

本书由张卫滨翻译,博客:http://lengyun3566.iteye.com/,新浪微博:http://weibo.com/zhangweibin1981
本书版权归原作者所有
自定义 ACL permission 声明 ........................................................................................ 168
在 JSP 中使用 Spring Security JSP tag 库启动 ACL ...................................................... 171
支持 ACL 的 Spring 表达式语言................................................................................... 171
易变的 ACL(Mutable ACLs)和授权 ......................................................................... 172
Ehcache ACL 缓存 ......................................................................................................... 175
典型 ACL 部署所要考虑的事情 ........................................................................................... 177
关于 ACL 的伸缩性和性能模型 ................................................................................... 177
不要忽视自定义开发的成本 ....................................................................................... 178
我应该用 Spring Security 的 ACL 吗?......................................................................... 179
小结....................................................................................................................................... 179
第八章 对 OpenID 开放 .................................................................................................... 180
OpenID 承诺的世界 ............................................................................................................. 180
注册一个 OpenID ......................................................................................................... 181
使用 Spring Security 启用 OpenID 认证 .............................................................................. 181
编写一个 OpenID 登录表单......................................................................................... 181
在 Spring Security 中配置支持 OpenID ....................................................................... 182
添加 OpenID 用户 ........................................................................................................ 183
OpenID 用户的注册问题 ..................................................................................................... 184
OpenID 标识是如何处理的 ......................................................................................... 184
使用 OpenID 实现注册 ................................................................................................ 186
属性交换(Attribute Exchange) ........................................................................................ 190
在 Spring Security OpenID 中启用 AX .......................................................................... 191
现实世界的 AX 的支持和限制 .................................................................................... 192
支持 Google OpenID ..................................................................................................... 193
OpenID 安全吗? ................................................................................................................. 194
小结....................................................................................................................................... 194
第九章 LDAP 目录服务 ..................................................................................................... 195
理解 LDAP ............................................................................................................................. 195
LDAP .............................................................................................................................. 195
通用的 LDAP 属性名 .................................................................................................... 196
运行一个嵌入式的 LDAP 服务 .................................................................................... 197
配置基本的 LDAP 集成 ........................................................................................................ 197
配置 LDAP 服务器引用 ................................................................................................ 198
启用 LDAP AuthenticationProvider ............................................................................... 198
解决嵌入式 LDAP 的问题 ............................................................................................ 198
理解 Spring LDAP 认证如何工作 ......................................................................................... 199
认证用户凭证 ............................................................................................................... 199
确定用户的角色 ........................................................................................................... 200
匹配 UserDetails 的其它属性 ...................................................................................... 202
LDAP 的高级配置 ................................................................................................................. 202
实例 JBCP LDAP 用户 .................................................................................................... 203
密码对比与绑定认证 ................................................................................................... 203
配置 UserDetailsContextMapper .................................................................................. 205
使用可代替的密码属性 ............................................................................................... 207