`
mnieguomin
  • 浏览: 26724 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring Security---ChannelProcessingFilter

 
阅读更多

                           Spring Security 的ChannelProcessingFilter 使用https请求(转)

 

字母“s”是Internet上最重要的字母。任何一个在Web上冲浪超过五分钟的人都知道绝大多数Web页面均与以“http://”打头的URL相关联。那是因为绝大多数Web页面都通过HTTP协议被请求和发送。

对于绝大多数页面来说,HTTP完全够用,但是当有秘密信息在Internet上四处传输时就不够用了。通过HTTP发送的信息很容易被无法无天的黑客截获和读取,并被用于他们的恶意计划。

当信息必须秘密地被发送时,字母“s”就开始起作用了。对于那些页面,你会发现相应的URL以“https://”而不只是“http://”开头。对于HTTPS,信息仍然使用HTTP发送,但是在另一个端口上发送,而且被加密,那样的话,如果它们被拦截了,任何非预定的人都将无法读取它们。
令人遗憾的是,HTTPS的问题是必须确保通过HTTPS传送的页面属于指向该安全页面的链接的编写者。换句话说,对于一个要用加密的HTTPS保护的页面来说,它必须使用一个以“https://”打头的URL进行链接。没有那个字母“s”,该页面便将不加密地在HTTP上发送。

由于这个至关重要的“s”特别容易被遗漏,因此Spring Security提供了一种十分简单的方式来确保某些页面使用HTTPS进行传送,而不管使用了哪种URL来链接到它们。如图7.14所示,ChannelProcessingFilter是一种Spring Security过滤器,它拦截某一请求,查看它是否需要被保护,如果是,就通过将该请求重新定向至原始请求URL的HTTPS格式来让“s”起作用。

我们已经像下面那样,在roadrantz-security.xml文件中,为RoadRantz应用程序配置了一个ChannelProcessingFilter:

这里的filterInvocationDefinitionSource属性被配置来告诉ChannelProcessingFilter哪些页面应该使用HTTPS进行保护,以及哪些不应该进行保护。它被配置为一个或者是多个被映射为将保护或不保护的URL模式。

但是在这些URL出现之前,我们必须为如何处理那些URL设置一些基本法则。第一行包含CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON,用于告诉Spring Security在与随后的URL模式进行比较之前,先标准化所有的URL。第二行包含PATTERN_TYPE_APACHE_ANT,那表明随后的URL模式都将使用Apache Ant样式路径进行呈现。

随后的每一行都将一个URL模式映射到它的安全要求上。在RoadRantz应用程序中,登录页面必须被保护(那样才没人能够截取用户的密码)。因此,/login.htm被映射到REQUIRES_SECURE_CHANNEL,表明它应该通过HTTPS进行发送。同样,发送给处理登录的URL的信息也必须被加密。正如读者很快将会看到的那样,Spring Security的AuthenticationProcessingFilter负责/j_acegi_security_check,因此这个URL模式也被设置为REQUIRES_SECURE_CHANNEL。

RoadRantz应用程序中的其他页面都不要求加密,因此“/**”URL模式(在Ant路径语法中,这表示所有URL)被设置为REQUIRES_INSECURE_CHANNEL,指定其他所有页面必须通过平常的、非安全的HTTP发送。注意,这些页面要求一个非安全的通道。那意味着如果这些页面被通过HTTPS进行访问,那么ChannelProcessingFilter将会把它们重新定向为通过HTTP进行发送。

 

 

 

 

 

 

分享到:
评论

相关推荐

    SpringSecurity-Jar包

    在这个"SpringSecurity-Jar包"中,包含了三个核心的jar文件:spring-security-config-4.2.3.RELEASE.jar、spring-security-core-4.2.3.RELEASE.jar以及spring-security-web-4.2.3.RELEASE.jar,它们各自承载了Spring...

    spring-security-core-3.1.0.RC1.jar

    《Spring Security核心库3.1.0.RC1详解》 Spring Security是Java平台上的一款强大且高度可配置的安全框架,用于解决Web应用和企业级应用的安全需求。在本篇文章中,我们将深入探讨Spring Security的核心库——`...

    spring-security-core-2.0.5.RELEASE.src

    `org.springframework.security.web`包下的Filter如FilterSecurityInterceptor、ChannelProcessingFilter等,分别处理认证、授权等任务。 三、核心概念 1. **FilterSecurityInterceptor**:这是Spring Security中...

    spring-security-3.0.5.RELEASE

    主要包括`DelegatingFilterProxy`、`ChannelProcessingFilter`、`SecurityContextPersistenceFilter`、`LogoutFilter`、`UsernamePasswordAuthenticationFilter`等,它们分别负责委托给Spring Security管理的安全...

    spring-security-2.0.5.jar2

    Spring Security的核心在于过滤器链,其中包含了一系列的过滤器,如`DelegatingFilterProxy`、`ChannelProcessingFilter`、`SecurityContextPersistenceFilter`等,它们共同协作,完成从HTTP请求到安全响应的转换。...

    spring-security-4.2.0.RELEASE-dist

    Spring Security 是一个强大的且高度可定制的身份验证和访问控制框架,用于保护基于Java的Web应用程序。这个"spring-security-4.2.0.RELEASE-dist"压缩包包含了Spring Security 4.2.0版本的全部资源,它允许开发者...

    spring-security-one完整版.rar

    - **Filter Chain**:Spring Security基于一系列过滤器(如`DelegatingFilterProxy`、`ChannelProcessingFilter`、`UsernamePasswordAuthenticationFilter`等)来拦截HTTP请求,执行安全逻辑。 - **Role-Based ...

    spring security4架包

    3. **spring-security-web-4.1.0.BUILD-SNAPSHOT.jar**:此模块主要关注Web安全,提供了一系列过滤器,如HttpSessionContextIntegrationFilter用于在HTTP会话中存储安全上下文,还有ChannelProcessingFilter用于强制...

    spring-security-3.0.5 api

    4. **拦截器与过滤器**:Spring Security使用一系列自定义的Servlet过滤器,如`DelegatingFilterProxy`、`ChannelProcessingFilter`、`RememberMeAuthenticationFilter`等,这些过滤器在HTTP请求生命周期的不同阶段...

    Spring_Security-3.0.1_中文官方文档(翻译版)

    Spring Security 是一个强大的Java安全框架,它为Spring应用程序提供了全面的安全服务。该框架的主要目标是为Web和企业级应用提供认证、授权以及安全配置。在3.0.1版本中,Spring Security进一步完善了其功能,提升...

    SpringSecurity2.0.5

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于保护基于Java的Web应用程序。这个特定的版本,Spring Security 2.0.5,虽然相对较老,但仍然值得探讨,因为它包含了早期的安全概念,这些...

    spring-security-3.2.9的jar包和源码包

    Spring Security Filter Chain 包括了如`DelegatingFilterProxy`、`ChannelProcessingFilter`、`SecurityContextHolderAwareRequestFilter`、`AnonymousAuthenticationFilter`、`SessionManagementFilter`、`...

    Spring Security 3 与 CAS单点登录配置-Server

    标题中的"Spring Security 3 与 CAS 单点登录配置-Server"涉及到的是在Java Web开发中使用Spring Security 3框架集成Central Authentication Service (CAS)实现单点登录(Single Sign-On, SSO)的服务器端配置。...

    spring security 3.1.3 源码含sample源码

    Spring Security的核心过滤器包括:(1) ChannelProcessingFilter处理HTTP和HTTPS请求切换;(2) LogoutFilter处理注销请求;(3) UsernamePasswordAuthenticationFilter处理基于表单的认证;(4) ...

    spring-security3.0.5源码

    3. **Filter Chain(过滤器链)**:Spring Security的核心在于其Web安全过滤器链,如`DelegatingFilterProxy`、`FilterSecurityInterceptor`和`ChannelProcessingFilter`等。这些过滤器在HTTP请求进入应用之前进行...

    spring security3.2.6 jar包

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。3.2.6.RELEASE是该框架的一个稳定版本,发布于2014年,它提供了许多安全特性来保护Web应用程序免受各种攻击。让我们深入探讨...

    spring-security3.1源码

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。Spring Security 3.1 版本是该框架的一个重要里程碑,它提供了许多关键的安全特性,包括身份验证、授权、会话管理以及对Web...

    spring-security3入门教程

    - **过滤器链**:Spring Security 使用一系列预定义的过滤器,如 ChannelProcessingFilter、SecurityContextPersistenceFilter、LogoutFilter 和 UsernamePasswordAuthenticationFilter,它们在请求处理过程中拦截...

    Spring Security 3.pdf

    Spring Security 是一个强大的Java安全框架,专为Java和Spring生态系统设计,用于实现全面的身份验证、授权和服务级安全功能。在Spring Security 3版本中,它引入了许多改进和新特性,以适应不断变化的安全需求和...

    一个比较好的spring security实例

    - Spring Security使用一系列过滤器处理HTTP请求,如`DelegatingFilterProxy`、`ChannelProcessingFilter`、`UsernamePasswordAuthenticationFilter`等,每个过滤器都有特定的职责。 - 在`configure(HttpSecurity ...

Global site tag (gtag.js) - Google Analytics