Spring Security为基于J2EE企业应用软件提供了全面安全服务。 特别是使用领先的J2EE解决方案-spring框架开发的企业软件项目。 如果你没有使用Spring开发企业软件,我们热情的推荐你仔细研究一下。 熟悉Spring-尤其是依赖注入原理-将帮助你更快的掌握Spring Security。
人们使用Spring Security有很多种原因, 不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 提到这些规范,特别要指出的是它们不能在WAR或EAR级别进行移植。这样,如果你更换服务器环境, 就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。 使用Spring Security解决了这些问题,也为你提供了很多有用的,可定制的其他安全特性。
你可能知道,安全包括两个主要操作, “认证”和“验证”(或权限控制)。 这就是Spring Security面向的两个主要方向。“认证” 是为用户建立一个他所声明的主体的过程, (“主体”一般是指用户,设备或可以在你系统中执行行动的其他系统)。 “验证”指的一个用户能否在你的应用中执行某个操作。 在到达授权判断之前,身份的主体已经由身份验证过程建立了。 这些概念是通用的,不是Spring Security特有的。
在身份验证层面,Spring Security广泛支持各种身份验证模式。 这些验证模型绝大多数都由第三方提供,或正在开发的有关标准机构提供的,例如Internet Engineering Task Force。 作为补充,Spring Security也提供了自己的一套验证功能。 Spring Security目前支持认证一体化和如下认证技术:
有时基本的认证是不够的。 有时你需要根据在主体和应用交互的方式来应用不同的安全措施。 比如,你可能,为了保护密码,不被窃听或受到中间人攻击,希望确保请求只通过HTTPS到达。 这在防止暴力攻击保护密码恢复过程特别有帮助, 或者简单的,让人难以复制你的系统的关键字内容。 为了帮助你实现这些目标,Spring Security完全支持自动“信道安全”, 整合jcaptcha一体化进行人类用户检测。
Spring Security不仅提供认证功能,也提供了完备的授权功能。 在授权方面主要有三个领域,授权web请求,授权被调用方法,授权访问单个对象的实例。 为了帮你了解它们之间的区别,对照考虑授在Servlet规范web模式安全,EJB容器管理安全,和文件系统安全方面的授权方式。 Spring Security在所有这些重要领域都提供了完备的能力,我们将在这份参考指南的后面进行探讨。
人们使用Spring Security有很多种原因, 不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 提到这些规范,特别要指出的是它们不能在WAR或EAR级别进行移植。这样,如果你更换服务器环境, 就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。 使用Spring Security解决了这些问题,也为你提供了很多有用的,可定制的其他安全特性。
你可能知道,安全包括两个主要操作, “认证”和“验证”(或权限控制)。 这就是Spring Security面向的两个主要方向。“认证” 是为用户建立一个他所声明的主体的过程, (“主体”一般是指用户,设备或可以在你系统中执行行动的其他系统)。 “验证”指的一个用户能否在你的应用中执行某个操作。 在到达授权判断之前,身份的主体已经由身份验证过程建立了。 这些概念是通用的,不是Spring Security特有的。
在身份验证层面,Spring Security广泛支持各种身份验证模式。 这些验证模型绝大多数都由第三方提供,或正在开发的有关标准机构提供的,例如Internet Engineering Task Force。 作为补充,Spring Security也提供了自己的一套验证功能。 Spring Security目前支持认证一体化和如下认证技术:
- HTTP BASIC authentication headers (一个基于IEFT RFC的标准)
- HTTP Digest authentication headers (一个基于IEFT RFC的标准)
- HTTP X.509 client certificate exchange (一个基于IEFT RFC的标准)
- LDAP (一个非常常见的跨平台认证需要做法,特别是在大环境)
- Form-based authentication (提供简单用户接口的需求)
- OpenID authentication
- 基于预先建立的请求头进行认证 (比如Computer Associates Siteminder)
- JA-SIG Central Authentication Service (也被称为CAS,这是一个流行的开源单点登录系统)
- Transparent authentication context propagation for Remote Method Invocation (RMI) and HttpInvoker (一个Spring远程调用协议)
- Automatic "remember-me" authentication (这样你可以设置一段时间,避免在一段时间内还需要重新验证)
- Anonymous authentication (允许任何调用,自动假设一个特定的安全主体)
- Run-as authentication (这在一个会话内使用不同安全身份的时候是非常有用的)
- Java Authentication and Authorization Service (JAAS)
- JEE Container autentication (这样,你可以继续使用容器管理认证,如果想的话)
- Kerberos
- Java Open Source Single Sign On (JOSSO) *
- OpenNMS Network Management Platform *
- AppFuse *
- AndroMDA *
- Mule ESB *
- Direct Web Request (DWR) *
- Grails *
- Tapestry *
- JTrac *
- Jasypt *
- Roller *
- Elastic Plath *
- Atlassian Crowd *
- 你自己的认证系统(向下看)
有时基本的认证是不够的。 有时你需要根据在主体和应用交互的方式来应用不同的安全措施。 比如,你可能,为了保护密码,不被窃听或受到中间人攻击,希望确保请求只通过HTTPS到达。 这在防止暴力攻击保护密码恢复过程特别有帮助, 或者简单的,让人难以复制你的系统的关键字内容。 为了帮助你实现这些目标,Spring Security完全支持自动“信道安全”, 整合jcaptcha一体化进行人类用户检测。
Spring Security不仅提供认证功能,也提供了完备的授权功能。 在授权方面主要有三个领域,授权web请求,授权被调用方法,授权访问单个对象的实例。 为了帮你了解它们之间的区别,对照考虑授在Servlet规范web模式安全,EJB容器管理安全,和文件系统安全方面的授权方式。 Spring Security在所有这些重要领域都提供了完备的能力,我们将在这份参考指南的后面进行探讨。