当前位置: 首页 > news >正文

网站建设制作设计seo优化南宁无锡网络公司

网站建设制作设计seo优化南宁,无锡网络公司,信息技术教案 建设我们的网站,公司网络营销推广软件问题描述: 在最近的一个项目中,有一个存在较久,并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用,该应用部署在Tomcat服务器上。起初,应用程序可以通过HTTP协议访问,一切运行都没…

问题描述:
       在最近的一个项目中,有一个存在较久,并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用,该应用部署在Tomcat服务器上。起初,应用程序可以通过HTTP协议访问,一切运行都没问题。然而,当我们决定切换到HTTPS协议以增强客户端(通常是网络浏览器)与服务器之间的安全通信时,问题随之产生,主要问题现象如下:

        例如登录页面的URL是https://***/login,任何尝试访问受Shiro保护的页面的操作都应该重定向用户到这个登录页面。但问题在于,即使在启用HTTPS协议并尝试使用HTTPS协议访问这些受保护的页面,系统仍然不断地将浏览器重定向到http://***/login,这就启用HTTPS协议后遇到的主要问题。

        我们部署架构中一个值得注意的方面是,网络前端有一个物理负载均衡器,负责处理SSL认证。通过HTTPS协议发出的请求首先到达这个负载均衡器,然后再通过HTTP协议转发到Tomcat Web服务器,结构如下图,其中响应中的Location Header在用户使用https访问页面时,预期应该返回https://***/login,但实际却返回了http://***/login

问题解决:
        想了下,问题应该就是因为负载卸载了证书实际到达Tomcat的请求协议是HTTP的,导致Shiro识别到的请求协议是HTTP,所以跳转地址便使用了HTTP而不是实际的HTTPS。

        先是查了下资料,定位到Shiro会根据一个Header名字为X-Forwarded-Proto(值是https或http)来获取通过反向代理进来的请求的实际使用协议(因为大多数SSL证书处理都是在反向代理上卸载掉, 导致到达应用时的请求都是HTTP)。同时Tomcat的server.xml需要增加配置来识别这个Header用来初始化HttpServletRequest内的属性, 实际影响的就是request.getScheme()这个方法的返回值。 

具体修改步骤:

  • 第一步:修改反向代理配置增加X-Forwarded-Proto Header

如果是硬负载比如A10或者F5,例如针对https协议需要配置如下 ,一般针对https和http协议会建立两个模板分别处理443端口和80端口的请求。

       
如果是Nginx,是下面这样配置:

  • 第二步:修改Tomcat配置

在Tomcat的server.xml配置文件中<Engine><Host>标签下增加如下配置,其中remoteIpHeader这个是用于获取外部实际ip的,一般一并加上了。protocolHeaderHttpsValue也可以不加因为https是默认值,加上这个一般一般情况下Java代码通过request.getScheme()方法就可以获取用户请求实际使用的协议了,Shiro也就可以根据实际协议去拼装登录页面URL了。

<Valve className="org.apache.catalina.valves.RemoteIpValve"remoteIpHeader="x-forwarded-for"protocolHeader="x-forwarded-proto"protocolHeaderHttpsValue="https" />
  • 第三步: Tomcat额外配置(可选)

我这里配置了以上两步以后,后端request.getScheme()方法仍然获取的是http,因为知道scheme这个值是RemoteIpValve这个类处理的,就看了下代码,发现server.xml中关于RemoteIpValve还有一个配置项,叫internalProxies是一个关于ip的正则表达式,代码中有一个if条件,只有当反向代理的ip可以通过正则匹配成功才会处理x-forwarded-*的header。并且Tomcat 7中正则缺少172段ip,更新版本的Tomcat可以匹配10.x.x.x, 192.168.x.x, 169.254.x.x, 127.x.x.x, 和172.16.x.x 到 172.31.x.x。 所以当反向代理服务器或者设备的ip不在以上范围的时候需要主动在RemoteIpValve配置中增加internalProxies的配置,如下(这里是Tomcat 7所以需要手动处理172段ip):

<Valve className="org.apache.catalina.valves.RemoteIpValve"internalProxies="172\.31\.1\.22"remoteIpHeader="x-forwarded-for"protocolHeader="x-forwarded-proto"protocolHeaderHttpsValue="https" />

总结

成功修改以上配置后,Shiro可以正常通过request.getScheme()获取用户请求使用的实际协议,也就解决了用户通过https访问页面但是跳转登录页面时协议变成了http的问题。
 

http://www.hkea.cn/news/153869/

相关文章:

  • 建设无障碍网站seo分析报告怎么写
  • 电子商务网站开发进什么科目模板自助建站
  • 威海市住房和城乡建设局官方网站北京seo营销公司
  • 开网页卡优化关键词排名工具
  • wordpress右侧文章归档东莞公司seo优化
  • 个人网站建设需求说明书免费外链生成器
  • 湖南网站建设的公司排名网页制作网站制作
  • 公司网页网站建设 ppt模板app开发公司排行榜
  • 网站开发yuanmus联合早报 即时消息
  • 为什么只有中国人怕疫情seo 页面
  • 网站开发总结报告十大门户网站
  • 临淄信息港发布信息临沂seo建站
  • 门户网站系统介绍企业推广哪个平台好
  • 免费网站建站排行榜网站策划报告
  • 网站设计的评估最近发生的热点新闻
  • 设建网站广告投放渠道
  • 日ip5000的网站怎么做如何提高网站在搜索引擎中的排名
  • 网站描文本链接怎么做深圳互联网营销
  • 一个服务器做两个网站自己做网站
  • 百草味网站建设的活动方案营销型企业网站有哪些
  • 论文课程网站 建设背景项目推广方式有哪些
  • 内部网站建设关键词优化推广策略
  • 一个公司可以做几个网站备案贵阳网络推广排名
  • 武汉高端网站建设免费广告网
  • 大理建网站常用于网站推广的营销手段是
  • js怎么做网站跨境电商网站
  • 台州外贸网站建设百度推广费用多少
  • 虚拟机怎么做网站空间培训班管理系统 免费
  • wordpress离线文章发布郑州seo关键词排名优化
  • 龙岗区网站建设中国职业培训在线