- 浏览: 452681 次
- 性别:
- 来自: 大连
博客专栏
-
《Spring Secur...
浏览量:383510
文章分类
最新评论
-
蒙奇君杰:
必须感谢一番!!!愿开源的态度为更多的人所拥有,所 认同!
关于对《Spring Security3》一书的翻译说明 -
601235723:
bbjavaeye 写道你好,有个问题请教一下我配了<b ...
《Spring Security3》第四章第一部分翻译下(自定义的UserDetailsService) -
bay0902:
中国互联网的脊梁
Spring Security 3全文下载 -
hdcustc:
项目源码下载 微博网盘里的那个依赖文件损坏了啊 能否提供个可 ...
Spring Security 3全文下载 -
i641878506:
楼主辛苦, 可以提供原书的原项目文件的下载么
Spring Security 3全文下载
三步之内使我们的应用变得安全
尽管Spring Security的配置可能会很难,但是它的作者是相当为我们着想的,因为他们为我们提供了一种简单的机制来使用它很多的功能并可以此作为起点。以这个为起点,额外的配置能够实现应用的分层次详细的安全控制。
我们将从我们不安全的在线商店开始,并且使用三步操作将它变成一个拥有基本用户名和密码安全认证的站点。这个认证仅仅是为了阐述使用Spring Security使我们应用变得安全的步骤,所以你可能会发现这样的方式会有明显不足,这将会引领我们在以后的配置中不断进行改良。
实现Spring Security的XML配置文件
起点配置的第一步是创建一个XML的配置文件,用来描述所有需要的Spring Security组件,这些组件将会控制标准的web请求。
在WEB-INFO目录下建立一个名为dogstore-security.xml的XML文件。文件的内容如下所示:
<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/ spring-security-3.0.xsd"> <http auto-config="true"> <intercept-url pattern="/*" access="ROLE_USER"/> </http> <authentication-manager alias="authenticationManager"> <authentication-provider> <user-service> <user authorities="ROLE_USER" name="guest" password="guest"/> </user-service> </authentication-provider> </authentication-manager> </beans:beans>这是我们应用中获得最小安全配置的唯一一个Spring Security配置文件。这个配置文件的格式使用了Spring Security特定的XML语法,一般称之为security命名空间。它在XML的命名空间中声明(http://www.springframework.org/schema/security)并与XML配置元素关联。我们将在在第六章:高级配置与扩展中讨论一种替代的配置方式,即使用传统的Spring Bean设置方式。
【讨厌Spring XML配置的用户可能会失望了,因为Spring Security没有像Spring那样提供可替代的注解机制。仔细想一下也是可以理解的,因为Spring Security关注的是整个系统而不是单个对象或类。但未来,我们可能能够在Spring MVC的控制器上使用安全注解,而不是在一个配置文件中指明URL模式!】
尽管在Spring Security中注解并不普遍,但正如你所预料的那样,对类或方法进行的配置是可以通过注解来完成的。我们将在第五章:精确的访问控制中介绍。
添加Spring DelegatingFilterProxy到web.xml文件
Spring Security对我们应用的影响是通过一系列的ServletRequest过滤器实现的(我们将会在介绍Spring Security架构的时候进行阐述)。可以把这些过滤器想成位于每个到我们应用的请求周围的具有安全功能的三明治。(这个比喻够新鲜,不过Spring Security的核心确实就是一系列介于真正请求之间的过滤器,译者注)。
Spring Security使用了o.s.web.filter.DelegatingFilterProxy这个servlet过滤器来包装所有的应用请求,从而保证它们是安全的。
【DelegatingFilterProxy实际上是Spring框架提供的,而不是安全特有的。这个过滤器一般在Spring构建的web应用工程中使用,并将依赖于servlet过滤器的Spring Bean与Servle过滤器的生命周期结合起来。】
通过在web.xml部署描述文件中添加如下的代码,就可以配置这样一个过滤器。这段代码位于Spring MVC的<servlet-mapping>之后:
<filter> <filter-name>springSecurityFilterChain</filter-name> <filterclass> org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>我们所做的是使用一个ServletRequest过滤器并将它配置成处理匹配给定URL模式(/*)的请求。因为我们配置的这个通配符模式匹配所有的URL,所以这个过滤器将会应用于每个请求。
如果你有心的话,可能会发现这与我们的Spring Security配置文件即dogstore-security.xml没有任何的关系。为了实现这个,我们需要添加一个XML配置文件的应用到web应用的部署描述文件web.xml中。
添加Spring Security XML配置文件的应用到web.xml
取决于你如何配置你的Spring web应用,不知你是否已经在web.xml中有了对XML 配置文件的明确引用。Spring web的ContextLoaderListener的默认行为是寻找与你的Spring web servlet同名的XML配置文件。让我们看一下如何添加这个新的Spring Security XML配置文件到已经存在的JBCP Pet商店站点中。
首先,我们需要看一下这个应用是否使用了Spring MVC的自动查找XML配置文件的功能。我们看一下在web.xml中servlet的名字,以<servlet-name>原始进行标识:
<servlet> <servlet-name>dogstore</servlet-name> <servletclass> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet>Servlet的名字是(<servlet-name>)是dogstore,所以Spring的约定胜于配置(Convention
over Configuration,CoC)将会在WEB-INF目录下寻找名为dogstore-servelt.xml的配置文件。我们没有覆盖这种默认行为,你能在WEB-INF目录下找到这个文件,它包含了一些Spring MVC相关的配置。
【很多Spring Web Flow和Spring MVC的用户并不明白这些CoC规则是如何生效的以及Spring的代码中在何处声明了这些规则。o.s.web.context.support.XmlWebApplicationContext和它的父类是了解这些的一个很好的起点。JavaDoc在讲解基于Spring MVC框架的web工程的一些参数配置方面也做得不错。】
也可以声明额外的Spring ApplicationContext配置文件,它将会先于Spring MVC servle关联的配置文件加载。这通过Spring的o.s.web.context.ContextLoaderListener创建一个独立于Spring MVC ApplicationContext的另一个ApplicationContext来实现。这是通常的非Spring MVC beans配置的方式,也为Spring Security相关的配置提供了一个好地方。
在web应用的部署描述文件中,用来配置ContextLoaderListener的XML文件地址是在<context-param>元素中给出的:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/dogstore-base.xml </param-value> </context-param>
dogstore-base.xml文件中包含了一些标准的Spring bean的配置,如数据源、服务层bean等。现在,我们能够添加一个包含Spring Security的XML配置文件了,下面是更新后的<context-param>元素:
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/dogstore-security.xml /WEB-INF/dogstore-base.xml </param-value> </context-param>
在我们添加完新的Spring Security配置文件到web部署文件并重启web工程后,尝试访问应用的首页地址:http://localhost:8080/JBCPPets/home.do,你将会看到如下的界面:
漂亮!我们已经使用Spring
Security在三步之内实现了一个简单的安全层。在这里,你可以使用guest作为用户名和密码进行登录。接着你将能够看到JBCP Pets应用的一个简单首页。
为了简便起见,本章的源码只包含了全部JBCP Pets整个应用的很小一部分(只有一个页面)。我们这么做是为了更简洁,同时也能让构建和部署应用时不必考虑我们将在后续章节中涉及到的附加功能。这也提供了一个很好的起点让你快速的体验参数的配置并重新部署以查看它们是否生效。
注意这些不足之处
到此为止,思考一下我们所做的事情。你可能已经意识到在产品化之前应用存在很多很明显的问题,这需要很多后续的工作和对Spring Security产品的了解。尝试列举一下在将这个实现安全功能的站点上线前还需要什么样的完善。
实现Spring Security起点级别的配置是相当迅速的,它已经提供了一个登录界面,用户名密码认证以及自动拦截我们在线商店的URL。但是在自动配置给我们提供的功能与我们的最终目标之间有很大的差距:
<!--[if !supportLists]-->l <!--[endif]-->我们将用户名、密码以及角色信息硬编码到XML配置文件中。你是否还记得我们添加的这部分XML内容:
<authentication-manager alias="authenticationManager"> <authentication-provider> <user-service> <user authorities="ROLE_USER" name="guest" password="guest"/> </user-service> </authentication-provider> </authentication-manager>你可以看到用户名和密码在这个文件中。你不可能愿意为每一个系统的用户都在这个XML文件中添加一个声明。要解决这个问题,你需要使用一个基于数据库的认证提供者(authentication provider)来替代它(我们将第四章:凭证安全存储完成它)。
<!--[if !supportLists]-->l <!--[endif]-->我们对所有的页面都进行了安全控制,包括一些潜在客户可能想匿名访问的界面。我们需要完善系统的角色以适应匿名的、认证过的以及管理权限的用户(这也将在第四章中讨论)。
<!--[if !supportLists]-->l <!--[endif]-->登录界面非常应用,但是它太基础了而且与我们JBCP商店风格一点也不一致。我们需要添加一个登录的form界面,并与我们应用的外观和风格一致(我们将在下一章解决这个问题)。
常见问题
很多用户在初次使用Spring Security时会遇到一些问题。我们列出了几个常见的问题和建议。我们希望你能够一直跟随着本书的讲解,运行我们示例代码。
<!--[if !supportLists]-->l <!--[endif]-->确保你的应用在添加Spring Security之前是可以编译和部署的。必要的时候看一些你所使用的servlet容器的入门级例子和文档。
<!--[if !supportLists]-->l <!--[endif]-->通常使用一个IDE如Eclipse会极大地简化你使用的servlet容器。不仅能够保证部署准确无误,它所提供的控制台日志也很易读可用来检查错误。你还可以在关键的位置添加断点,运行的时候会触发从而简化分析错误的过程。
<!--[if !supportLists]-->l <!--[endif]-->如果你的XML配置文件不正确,你会得到这样的提示信息(或类似的):org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'。为实现Spring Security的正确配置需要各种各样的XML命名空间引用,这可能会使很多用户感到迷惑。重新检查一下这个例子,仔细查看一下schame声明的部分,并使用XML校验器来保证你没有不合法的XML。
<!--[if !supportLists]-->l <!--[endif]-->确保你所使用的Spring和Spring Security版本匹配,并确保没有你的应用中不存在没用的Spring jar包。
评论
一个也可以,我的就可以运行。
发表评论
-
Spring Security 3全文下载
2012-03-15 20:31 20372本书已经翻译完成,提供给大家下载 以下地址为ITEYE的电子 ... -
《Spring Security3》附录翻译(参考资料)
2012-02-13 22:58 6545附录:参考材料 在本附录中, ... -
《Spring Security3》第十三章翻译(迁移到Spring Security 3)
2012-02-13 22:50 5325第十三章 迁移到Spring Security 3 ... -
《Spring Security3》第十二章翻译(Spring Security扩展)
2012-02-13 22:38 7967第十二章 Spring Security扩展 ... -
《Spring Security3》第十一章(客户端证书认证)第二部分翻译
2012-02-13 22:23 4922在Spring Security中配置客户端证书认证 ... -
《Spring Security3》第十一章(客户端证书认证)第一部分翻译
2012-02-13 22:00 6201第十一章 客户端证书认证(Client Cert ... -
《Spring Security3》第十章(CAS)第二部分翻译(CAS高级配置)
2012-01-19 13:07 8626高级CAS配置 ... -
《Spring Security3》第十章(CAS)第一部分翻译(CAS基本配置)
2012-01-19 12:54 12334第十章 使用中心认证服务(CAS)进行单点登录 ... -
《Spring Security3》第九章(LDAP)第三部分翻译(LDAP明确配置)
2012-01-19 12:44 6447明确的LDAP bean配置 ... -
《Spring Security3》第九章(LDAP)第二部分翻译(LDAP高级配置)
2012-01-19 12:36 7179LDAP的高级配置 一旦我们 ... -
《Spring Security3》第九章(LDAP)第一部分翻译(LDAP基本配置)
2012-01-19 12:22 6175第九章 LDAP目录服务 在本章中,我们 ... -
《Spring Security3》第八章第三部分翻译(属性交换)
2012-01-18 15:46 2929属性交换(Attribute Exchange) ... -
《Spring Security3》第八章第二部分翻译(OpenID用户的注册)
2012-01-18 13:39 5401OpenID用户的注册问 ... -
《Spring Security3》第八章第一部分翻译(OpenID与Spring Security)
2012-01-17 22:38 7561第八章 对OpenID开放 OpenID是 ... -
《Spring Security3》第七章第三部分翻译(ACL的注意事项)
2012-01-17 22:25 2702典型ACL部署所要考虑的事情 ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(下)
2012-01-17 22:17 4202支持ACL的Spring表达式语言 SpEL对A ... -
《Spring Security3》第七章第二部分翻译(高级ACL)(上)
2012-01-10 22:59 4666高级ACL话题 一些高级的话 ... -
《Spring Security3》第七章第一部分翻译(访问控制列表ACL)
2011-12-30 22:02 9492第七章 访问控制列表(ACL) 在本章中, ... -
《Spring Security3》第六章第七部分翻译(认证事件处理与小结)
2011-11-22 22:37 5475认证事件处理 有一个重要的功能只能通 ... -
《Spring Security3》第六章第六部分翻译(Spring Security基于bean的高级配置)
2011-11-22 22:25 5498Spring Security基于bean的高级配置 ...
相关推荐
《Spring Security3》第二章第三部分的翻译下篇主要涵盖了Spring Security的核心概念和技术,这部分内容是深入理解Spring Security架构和实现安全控制的关键。在本章节中,我们将详细探讨以下几个核心知识点: 1. *...
### 第二章:深入理解Spring Security3 本章深入探讨了Spring Security3的内部机制,包括安全过滤器链、认证管理器(Authentication Manager)的工作原理以及如何定制这些组件以满足特定需求。 ### 第三章:高级安全...
第二章:springsecurity起步 第三章:增强用户体验 第四章:凭证安全存储 第五章:精确的访问控制 第六章:高级配置和扩展 第七章:访问控制列表(ACL) 第八章:对OpenID开放 第九章:LDAP目录服务 第十章:使用...
#### 第二章:Spring Security起步 **安全的核心概念** - **认证**:验证用户身份的过程。 - **授权**:根据认证结果决定用户可以执行的操作。 **实现步骤** 1. **配置Spring Security的XML文件**: - 定义了安全...
### 第二章:Spring Security起步 这一章重点介绍了如何快速集成Spring Security到现有的项目中。 - **安全的核心概念**:深入浅出地解释了安全领域的重要概念,如认证、授权等。 - **实现Spring Security的XML...
#### 第二章:Spring Security起步 - **安全的核心概念**:深入探讨认证与授权等核心概念。 - **认证**:详细介绍认证的过程及其实现方式。 - **授权**:讲解授权的概念以及在Spring Security中的实现方式。 - **三...
- **第2章:使用数据库管理用户权限** - **修改配置文件:** 更新Spring Security的配置文件,使其能够从数据库中读取用户信息和权限数据。 - **数据库表结构:** 设计并创建数据库表来存储用户信息和权限数据。 ...
第二章:介绍Spring Security(Introducing Spring Security) - Spring Security概述:解释Spring Security框架的作用以及如何在Spring应用中集成安全功能。 - 基础配置:介绍如何设置Spring Security的基本配置,...
#### 第二章:Spring Security 起步 **安全的核心概念** - **认证**:验证用户身份的过程。 - **授权**:根据用户的角色和权限决定其可以访问哪些资源。 **三步之内使我们的应用变得安全** 1. **配置Spring ...
#### 二、Spring Security OAuth2 Boot 2.6.8版本概述 Spring Security OAuth2 Boot 2.6.8作为最后一版的官方文档,提供了关于如何使用Spring Security OAuth2 Boot来简化授权和资源服务器设置的方法。这一版本支持...
第2章 Spring简介 2.1 Spring Framework 2.1.1 Spring的模块介绍 2.1.2 Spring的发布版本 2.1.3 Spring的项目 2.2 安装Spring Framework 2.2.1 问题描述 2.2.2 解决...
第2章 Spring简介 2.1 Spring Framework 2.1.1 Spring的模块介绍 2.1.2 Spring的发布版本 2.1.3 Spring的项目 2.2 安装Spring Framework 2.2.1 问题描述 2.2.2 解决...
第2章 Spring简介 2.1 Spring Framework 2.1.1 Spring的模块介绍 2.1.2 Spring的发布版本 2.1.3 Spring的项目 2.2 安装Spring Framework 2.2.1 问题描述 2.2.2 解决方案 ...
第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源...
2. **第二章:搭建Spring环境** - 安装与配置:介绍如何配置Java开发环境,包括JDK、IDE和构建工具如Maven或Gradle。 - 创建第一个Spring项目:逐步指导创建一个简单的Spring项目,体验Spring的基本配置。 3. **...
在压缩包中包含的两个部分分别是“Spring+in+Action(第二版)中文版(381-450).pdf”和“Spring+in+Action(第二版)中文版(451-505).pdf”,这代表了书籍的两个章节段落。根据页码范围,我们可以推测这些章节涵盖了...