`
solonote
  • 浏览: 89978 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于AJP HTTPS切换HTTP Session失效的问题

阅读更多

基础知识:

Cookie有三种形式:

1.https only: 当服务器从https协议redirect到http协议后,这样的cookie就会失效。

2.http only: 当服务器从http协议redirect到https协议后,这样的cookie就会失效。

3.http and https: 协议切换不会失效

 

标准J2ee的Session使用的Cookie名称是 JSESSIONID.

Tomcat/JBoss服务器在request.isSecure() == false的时候,建立的是第三种形式的JSESSIONID.

当然reques.isSecure() == true时,建立的是第一种形式的JSESSIONID.

AJP的Connect有两个参数:

secure 默认为false

schema 默认为http

 

在Apache使用proxy代理到ajp端口,AJP会收到你当前端口的信息,443/80

AJP构造出来的reqeust会根据这两个端口来设置request的secure值,如果是443,request.isSecure()就等于true.

 

注意:

在AJP收到的端口信息不为0的情况下,无论AJP的Connect配置的secure和schema是什么,他们都是无效的!

 

这个时候,一旦你的Session是在HTTPS下建立的,那么当你Redirect到HTTP端口,你的Session就会失效.

 

我不知道有什么方式让Apache发给AJP的端口值为0.所以目前的解决方案是443端口不进行AJP proxy,使用http proxy替代。

 

 

 

 

分享到:
评论
1 楼 sy197661944 2012-08-02  
http://static.springsource.org/spring-security/site/faq.html

2.3


I'm using Tomcat (or some other servlet container) and have enabled HTTPS for my login page, switching back to HTTP afterwards. It doesn't work - I just end up back at the login page after authenticating.

This happens because sessions created under HTTPS, for which the session cookie is marked as “secure”, cannot subsequently be used under HTTP. The browser will not send the cookie back to the server and any session state will be lost (including the security context information). Starting a session in HTTP first should work as the session cookie won't be marked as secure (you will also have to disable Spring Security's Session Fixation Protection support to prevent it from creating a new secure session on login (you can always create a new session yourself at a later stage). Note that switching between HTTP and HTTPS is not a good idea in general, as any application which uses HTTP at all is vulnerable to man-in-the-middle attacks. To be truly secure, the user should begin accessing your site in HTTPS and continue using it until they log out. Even clicking on an HTTPS link from a page accessed over HTTP is potentially risky. If you need more convincing, check out a tool like sslstrip.

相关推荐

    关于Tomcat的AJP端口禁用.docx

    **关于Tomcat的AJP端口禁用** 在IT领域,特别是服务器管理中,安全加固是至关重要的。Tomcat作为一款广泛使用的Java Servlet容器,它的安全性直接影响到整个应用系统的稳定性和数据安全。AJP(Apache JServ ...

    ajp各参数含义

    AJP (Apache JServ Protocol) 是一种用于Web服务器与Servlet容器之间通信的协议,主要由Apache Tomcat等Java应用服务器使用。AJP协议的主要目的是为了提高性能,通过使用持久连接来减少TCP握手和断开的开销。在本文...

    AJP for Nginx

    **AJP 协议详解** AJP(Apache Jserv Protocol)是一种用于Web服务器与应用服务器之间通信的协议,主要用于在Nginx等反向代理服务器和Tomcat等Java应用服务器之间传输数据。AJP协议的设计目标是提高性能,特别是在...

    AJP+IIS7+ISAPI

    标题中的"AJP+IIS7+ISAPI"指的是在Windows 7操作系统(IIS7)上配置Apache JServ Protocol(AJP)来与Tomcat应用服务器进行通信的一种集成方式。AJP是一种用于Web服务器和Servlet容器之间通信的协议,常用于负载均衡和...

    apache +tomcat集群 ajp_proxy实际操作

    ### Apache + Tomcat集群与AJP Proxy实际操作详解 #### Apache服务器安装与配置 Apache作为一款广泛使用的开源HTTP服务器,在企业级应用环境中扮演着至关重要的角色。尤其在与Tomcat结合形成集群时,Apache能够有效...

    ajp13 tomcat 和iis整合

    【标题】:“ajp13 tomcat 和iis整合” 在Web服务器的世界中,Apache Tomcat和Microsoft IIS是两种非常流行的服务器软件。Tomcat是一个开源的Java Servlet容器,主要用于运行Java Web应用程序,而IIS(Internet ...

    Tomcat-Ajp-lfi_python_

    这个标题表明了我们将探讨的话题是关于网络安全,特别是针对Web服务器的攻击手段。 【描述】提到“可以用来验证tomcat-ajp-lfi的漏洞”,这暗示了该脚本的主要功能是检测Tomcat服务器是否存在AJP LFI漏洞。AJP...

    lvs中session共享配置.txt

    在实现负载均衡的过程中,保持会话(session)的一致性是一个重要的问题。本文将详细介绍LVS(Linux Virtual Server)环境下如何进行session共享配置。 #### 二、LVS与Session共享 LVS是一种基于Linux内核的高性能负载...

    jetty-ajp-6.1.6rc0.jar

    jetty-ajp-6.1.6rc0.jar

    APACHE(proxy_ajp_stickysession) + TOMCAT实现高可用网站或管理系统集群

    这样可以避免因用户会话在不同服务器间切换导致的数据丢失或登录失效问题。 在实际部署中,可能需要配置以下文件: 1. `httpd.conf`:这是Apache服务器的主要配置文件,需要在这里启用Proxy_AJP模块,例如: ``` ...

    tomcat-session同步所需jar.rar_session集群共享_tomcat session

    其中,`DeltaManager`负责session数据的同步,而`JvmRouteBinderValve`则用于确定请求应路由到哪个服务器,通常配合使用`mod_jk`或`mod_proxy_ajp`等Apache模块实现粘滞会话。 **相关jar文件**:"tomcat-session...

    tomcat cluster 集群 session复制

    一直以来,我误解认为启动了n个tomcat,则Session需要同步复制到n个Tomcat中存在,因此在启动了6个以上的Tomcat,性能会大大下降。 而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session...

    AJP及CSRF漏洞描述及处理方案

    Apache JServ协议(AJP)是一种二进制协议,可以将来自Web服务器的入站请求代理到 位于Web服务器后面的应用程序服务器。不建议在互联网上公开使用AJP服务。 如果AJP配置错误,可能会允许攻击者访问内部资源。

    tomcat集群session共享

    使用浏览器在不同实例之间切换,观察session数据是否能正确共享。如有问题,检查日志文件并根据错误信息进行调试。 在实际生产环境中,还需要考虑其他因素,如负载均衡策略、session数据序列化和反序列化、安全性等...

    nginx_ajp_module:支持Nginx的AJP协议代理

    nginx_ajp_module-通过Nginx支持AJP协议代理 概要 http { upstream tomcats { server 127.0.0.1:8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } } ...

    grizzly-http-ajp-1.9.42.zip

    【标题】"grizzly-http-ajp-1.9.42.zip" 是一个与开源项目相关的压缩包,其中包含了Grizzly HTTP服务器的AJP(Apache JServ Protocol)模块的一个版本,具体为1.9.42。Grizzly是Oracle公司开发的一个轻量级、高性能...

    ajp1_python_txt_

    White bells with pendulums of aniseHarmonies of glass where my lips become puppetsAnd take me to a gentle river of warm currentWhere I dream with seeing your gaze.But I refuse to open my eyes ...

    Apache负载均衡 Tomcat6的集群和session的复制

    此外,为了使Apache能够与Tomcat集群中的所有实例通信,可能还需要配置mod_proxy_ajp模块,它允许Apache通过AJP协议与Tomcat通信,提供更高的性能。 总的来说,Apache负载均衡和Tomcat集群及session复制是提高Web...

    三个 工具类 的下载,AJP

    在IT行业中,我们经常需要处理各种软件的安装和配置,以构建高效的工作环境。本话题主要涉及三个重要的工具:Apache Tomcat、Java Development Kit (JDK) 和 Python。这三个工具在Web开发、后端服务以及编程语言学习...

Global site tag (gtag.js) - Google Analytics