Spring Security-3.0.1中文官方文档(翻译版)
这次发布的Spring Security-3.0.1是一个bug fix版,主要是对3.0中存在的一些问题进行修正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。
另:Spring Security从2010-01-01以后,版本控制从SVN换成了GIT,我们在翻译文档的时候,主要是根据SVN的变化来进行文档内容的比对,这次换成GIT后,感觉缺少了之前那种文本比对工具,如果有对GIT熟悉的朋友,还请推荐一下文本比对的工具,谢谢。
另:Spring Security从2010-01-01以后,版本控制从SVN换成了GIT,我们在翻译文档的时候,主要是根据SVN的变化来进行文档内容的比对,这次换成GIT后,感觉缺少了之前那种文本比对工具,如果有对GIT熟悉的朋友,还请推荐一下文本比对的工具,谢谢。
- 序言
- I. 入门
-
- 1. 介绍
-
- 1.1. Spring Security是什么?
- 1.2. 历史
- 1.3. 发行版本号
- 1.4. 获得Spring Security
-
- 1.4.1. 项目模块
-
-
1.4.1.1. Core -
spring-security-core.jar
-
1.4.1.2. Web -
spring-security-web.jar
-
1.4.1.3. Config -
spring-security-config.jar
-
1.4.1.4. LDAP -
spring-security-ldap.jar
-
1.4.1.5. ACL -
spring-security-acl.jar
-
1.4.1.6. CAS -
spring-security-cas-client.jar
-
1.4.1.7. OpenID -
spring-security-openid.jar
-
1.4.1.1. Core -
- 1.4.2. 获得源代码
- 2. Security命名空间配置
-
- 2.1. 介绍
-
- 2.1.1. 命名空间的设计
- 2.2. 开始使用安全命名空间配置
-
-
2.2.1. 配置
web.xml
-
2.2.2. 最小
<http>
配置 -
-
2.2.2.1.
auto-config
包含了什么? - 2.2.2.2. 表单和基本登录选项
-
2.2.2.1.
- 2.2.3. 使用其他认证提供器
-
- 2.2.3.1. 添加一个密码编码器
-
2.2.1. 配置
- 2.3. 高级web特性
-
- 2.3.1. Remember-Me认证
- 2.3.2. 添加HTTP/HTTPS信道安全
- 2.3.3. 会话管理
-
- 2.3.3.1. 检测超时
- 2.3.3.2. 同步会话控制
- 2.3.3.3. 防止Session固定攻击
- 2.3.4. 对OpenID的支持
-
- 2.3.4.1. 属性交换
- 2.3.5. 添加你自己的filter
-
-
2.3.5.1. 设置自定义
AuthenticationEntryPoint
-
2.3.5.1. 设置自定义
- 2.4. 保护方法
-
-
2.4.1.
<global-method-security>
元素 -
-
2.4.1.1. 使用
protect-pointcut
添加安全切点
-
2.4.1.1. 使用
-
2.4.1.
- 2.5. 默认的AccessDecisionManager
-
- 2.5.1. 自定义AccessDecisionManager
- 2.6. 验证管理器和命名空间
- 3. 示例程序
-
- 3.1. Tutorial示例
- 3.2. Contacts
- 3.3. LDAP例子
- 3.4. CAS例子
- 3.5. Pre-Authentication例子
- 4. Spring Security社区
-
- 4.1. 任务跟踪
- 4.2. 成为参与者
- 4.3. 更多信息
- II. 结构和实现
-
- 5. 技术概述
-
- 5.1. 运行环境
- 5.2. 核心组件
-
- 5.2.1. SecurityContextHolder, SecurityContext 和 Authentication对象
-
- 5.2.1.1. 获得当前用户的信息
- 5.2.2. UserDetailsService
- 5.2.3. GrantedAuthority
- 5.2.4. 小结
- 5.3. 验证
-
- 5.3.1. 什么是Spring Security的验证呢?
- 5.3.2. 直接设置SecurityContextHolder的内容
- 5.4. 在web应用中验证
-
- 5.4.1. ExceptionTranslationFilter
- 5.4.2. AuthenticationEntryPoint
- 5.4.3. 验证机制
-
5.4.4. 在请求之间保存
SecurityContext
。
- 5.5. Spring Security中的访问控制(验证)
-
- 5.5.1. 安全和AOP建议
-
5.5.2. 安全对象和
AbstractSecurityInterceptor
-
- 5.5.2.1. 配置属性是什么?
- 5.5.2.2. RunAsManager
- 5.5.2.3. AfterInvocationManager
- 5.5.2.4. 扩展安全对象模型
- 5.6. 国际化
- 6. 核心服务
-
-
6.1. The
AuthenticationManager
,ProviderManager
和AuthenticationProvider
s -
-
6.1.1.
DaoAuthenticationProvider
-
6.1.1.
-
6.2.
UserDetailsService
实现 -
- 6.2.1. 内存认证
-
6.2.2.
JdbcDaoImpl
-
- 6.2.2.1. 权限分组
- 6.3. 密码加密
-
- 6.3.1. 什么是散列加密?
- 6.3.2. 为散列加点儿盐
- 6.3.3. 散列和认证
-
6.1. The
- III. web应用安全
-
- 7. 安全过滤器链
-
-
7.1.
DelegatingFilterProxy
-
7.2.
FilterChainProxy
-
- 7.2.1. 绕过过滤器链
- 7.3. 过滤器顺序
- 7.4. 使用其他过滤器 —— 基于框架
-
7.1.
- 8. 核心安全过滤器
-
-
8.1.
FilterSecurityInterceptor
-
8.2.
ExceptionTranslationFilter
-
-
8.2.1.
AuthenticationEntryPoint
-
8.2.2.
AccessDeniedHandler
-
8.2.1.
-
8.3.
SecurityContextPersistenceFilter
-
-
8.3.1.
SecurityContextRepository
-
8.3.1.
-
8.4.
UsernamePasswordAuthenticationFilter
-
- 8.4.1. 认证成功和失败的应用流程
-
8.1.
- 9. Basic(基本)和Digest(摘要)验证
-
-
9.1.
BasicAuthenticationFilter
-
- 9.1.1. 配置
-
9.2.
DigestAuthenticationFilter
-
- 9.2.1. Configuration
-
9.1.
- 10. Remember-Me认证
-
- 10.1. 概述
- 10.2. 简单基于散列标记的方法
- 10.3. 持久化标记方法
- 10.4. Remember-Me接口和实现
-
- 10.4.1. TokenBasedRememberMeServices
- 10.4.2. PersistentTokenBasedRememberMeServices
- 11. 会话管理
-
- 11.1. SessionManagementFilter
-
11.2.
SessionAuthenticationStrategy
- 11.3. 同步会话
- 12. 匿名认证
-
- 12.1. 概述
- 12.2. 配置
-
12.3.
AuthenticationTrustResolver
- IV. 授权
-
- 13. 验证架构
-
- 13.1. 验证
- 13.2. 处理预调用
-
- 13.2.1. AccessDecisionManager
- 13.2.2. 基于投票的AccessDecisionManager实现
-
-
13.2.2.1.
RoleVoter
-
13.2.2.2.
AuthenticatedVoter
- 13.2.2.3. Custom Voters
-
13.2.2.1.
- 13.3. 处理后决定
- 14. 安全对象实现
-
- 14.1. AOP联盟 (MethodInvocation) 安全拦截器
-
- 14.1.1. 精确的 MethodSecurityIterceptor 配置
- 14.2. AspectJ (JoinPoint) 安全拦截器
- 15. 基于表达式的权限控制
-
- 15.1. 概述
-
- 15.1.1. 常用内建表达式
- 15.2. Web 安全表达式
- 15.3. 方法安全表达式
-
-
15.3.1.
@Pre
和@Post
注解 -
-
15.3.1.1. 访问控制使用
@PreAuthorize
和@PostAuthorize
-
15.3.1.2. 过滤使用
@PreFilter
和@PostFilter
-
15.3.1.1. 访问控制使用
-
15.3.1.
- 16. acegi到spring security的转换方式
-
- 16.1. Spring Security是什么
- 16.2. 目标
- 16.3. 步骤
- 16.4. 总结
- V. 高级话题
-
- 17. 领域对象安全(ACLs)
-
- 17.1. 概述
- 17.2. 关键概念
- 17.3. 开始
- 18. 预认证场景
-
- 18.1. 预认证框架类
-
- 18.1.1. AbstractPreAuthenticatedProcessingFilter
- 18.1.2. AbstractPreAuthenticatedAuthenticationDetailsSource
-
- 18.1.2.1. J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource
- 18.1.3. PreAuthenticatedAuthenticationProvider
- 18.1.4. Http403ForbiddenEntryPoint
- 18.2. 具体实现
-
- 18.2.1. 请求头认证(Siteminder)
-
- 18.2.1.1. Siteminder示例配置
- 18.2.2. J2EE容器认证
- 19. LDAP认证
-
- 19.1. 综述
- 19.2. 在Spring Security里使用LDAP
- 19.3. 配置LDAP服务器
-
- 19.3.1. 使用嵌入测试服务器
- 19.3.2. 使用绑定认证
- 19.3.3. 读取授权
- 19.4. 实现类
-
- 19.4.1. LdapAuthenticator实现
-
- 19.4.1.1. 常用功能
- 19.4.1.2. BindAuthenticator
- 19.4.1.3. PasswordComparisonAuthenticator
- 19.4.1.4. 活动目录认证
- 19.4.2. 链接到LDAP服务器
- 19.4.3. LDAP搜索对象
-
-
19.4.3.1.
FilterBasedLdapUserSearch
-
19.4.3.1.
- 19.4.4. LdapAuthoritiesPopulator
- 19.4.5. Spring Bean配置
- 19.4.6. LDAP属性和自定义UserDetails
- 20. JSP标签库
-
- 20.1. 声明Taglib
-
20.2.
authorize
标签 -
20.3.
authentication
标签 -
20.4.
accesscontrollist
标签
- 21. Java认证和授权服务(JAAS)供应器
-
- 21.1. 概述
- 21.2. 配置
-
- 21.2.1. JAAS CallbackHandler
- 21.2.2. JAAS AuthorityGranter
- 22. CAS认证
-
- 22.1. 概述
- 22.2. CAS是如何工作的
- 22.3. 配置CAS客户端
- 23. X.509认证
-
- 23.1. 概述
- 23.2. 把X.509认证添加到你的web系统中
- 23.3. 为tomcat配置SSL
- 24. 替换验证身份
-
- 24.1. 概述
- 24.2. 配置
- A. 安全数据库表结构
-
- A.1. User表
-
- A.1.1. 组权限
- A.2. 持久登陆(Remember-Me)表
- A.3. ACL表
-
- A.3.1. Hypersonic SQL
-
- A.3.1.1. PostgreSQL
- B. 安全命名空间
-
-
B.1. Web应用安全 -
<http>
元素 -
-
B.1.1.
<http>
属性 -
-
B.1.1.1.
servlet-api-provision
-
B.1.1.2.
path-type
-
B.1.1.3.
lowercase-comparisons
-
B.1.1.4.
realm
-
B.1.1.5.
entry-point-ref
-
B.1.1.6.
access-decision-manager-ref
-
B.1.1.7.
access-denied-page
-
B.1.1.8.
once-per-request
-
B.1.1.9.
create-session
-
B.1.1.1.
-
B.1.2.
<access-denied-handler>
-
B.1.3.
<intercept-url>
元素 -
-
B.1.3.1.
pattern
-
B.1.3.2.
method
-
B.1.3.3.
access
-
B.1.3.4.
requires-channel
-
B.1.3.5.
filters
-
B.1.3.1.
-
B.1.4.
<port-mappings>
元素 -
B.1.5.
<form-login>
元素 -
-
B.1.5.1.
login-page
-
B.1.5.2.
login-processing-url
-
B.1.5.3.
default-target-url
-
B.1.5.4.
always-use-default-target
-
B.1.5.5.
authentication-failure-url
-
B.1.5.6.
authentication-success-handler-ref
-
B.1.5.7.
authentication-failure-handler-ref
-
B.1.5.1.
-
B.1.6.
<http-basic>
元素 -
B.1.7.
<remember-me>
元素 -
-
B.1.7.1.
data-source-ref
-
B.1.7.2.
token-repository-ref
-
B.1.7.3.
services-ref
-
B.1.7.4.
token-repository-ref
-
B.1.7.5.
key
属性 -
B.1.7.6.
token-validity-seconds
-
B.1.7.7.
user-service-ref
-
B.1.7.1.
-
B.1.8.
<session-management>
元素 -
-
B.1.8.1.
session-fixation-protection
-
B.1.8.1.
-
B.1.9.
<concurrent-control>
元素 -
-
B.1.9.1.
max-sessions
属性 -
B.1.9.2.
expired-url
属性 -
B.1.9.3.
error-if-maximum-exceeded
属性 -
B.1.9.4.
session-registry-alias
和session-registry-ref
属性
-
B.1.9.1.
-
B.1.10.
<anonymous>
元素 -
B.1.11.
<x509>
元素 -
-
B.1.11.1.
subject-principal-regex
属性 -
B.1.11.2.
user-service-ref
属性
-
B.1.11.1.
-
B.1.12.
<openid-login>
元素 -
B.1.13.
<logout>
元素 -
-
B.1.13.1.
logout-url
属性 -
B.1.13.2.
logout-success-url
属性 -
B.1.13.3.
invalidate-session
属性
-
B.1.13.1.
-
B.1.14.
<custom-filter>
元素
-
B.1.1.
- B.2. 认证服务
-
-
B.2.1.
<authentication-manager>
元素 -
- B.2.1.1. <authentication-provider>元素
-
B.2.1.2. 使用
<authentication-provider>
来引用一个AuthenticationProvider
Bean
-
B.2.1.
- B.3. 方法安全
-
-
B.3.1.
<global-method-security>
元素 -
-
B.3.1.1.
secured-annotations
和jsr250-annotations
属性 -
B.3.1.2. 安全方法使用
<protect-pointcut>
-
B.3.1.3.
<after-invocation-provider>
元素
-
B.3.1.1.
- B.3.2. LDAP命名空间选项
-
-
B.3.2.1. 使用
<ldap-server>
元素定义LDAP服务器 -
B.3.2.2.
<ldap-provider>
元素 -
B.3.2.3.
<ldap-user-service>
元素
-
B.3.2.1. 使用
-
B.3.1.
-
B.1. Web应用安全 -