java – 负载均衡(AWS Beanstalk)环境中的Spring安全性失败?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 负载均衡(AWS Beanstalk)环境中的Spring安全性失败?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3002字,纯文字阅读大概需要5分钟。
内容图文
![java – 负载均衡(AWS Beanstalk)环境中的Spring安全性失败?](/upload/InfoBanner/zyjiaocheng/794/90a9c3282006490eb49ddfee93cae6fa.jpg)
我正在研究一种在现有环境中运行良好的现有代码.该应用程序有一个登录表单,用户登录后将用户带到登录页面.
我的问题:当我将应用程序移动到AWS Beanstalk(带有2个实例)时,成功登录会将用户带回登录页面
该应用程序是基于Spring的(MVC,安全性),具有以下安全配置:
<security:http use-expressions="true">
<security:intercept-url pattern="/" access="permitAll" />
<security:intercept-url pattern="/index.html" access="permitAll" />
<security:intercept-url pattern="/login.html" access="permitAll" />
... bunch of other pages ....
<security:intercept-url pattern="/secure/**" access="isAuthenticated()" />
<security:form-login login-page="/login.html"
default-target-url="/secure/landing.html"
authentication-failure-url="/login.html?login_error=1" />
<security:logout logout-url="/logout.html"
logout-success-url="/login.html" />
</security:http>
应用程序在单节点环境中正常工作,用户登录时的示例日志跟踪:
1: [http-bio-8080-exec-1 DEBUG DefaultRedirectStrategy – sendRedirect – Redirecting to ‘/myapp/secure/landing.html’
2: [http-bio-8080-exec-1] DEBUG HttpSessionSecurityContextRepository – saveContext – SecurityContext stored to HttpSession: ‘org.springframework.security.core.context.SecurityContextImpl@86073c69: /* some details */ Granted Authorities: ROLE_USER’
3: [http-bio-8080-exec-1] DEBUG SecurityContextPersistenceFilter – doFilter – SecurityContextHolder now cleared, as request processing completed
4: [http-bio-8080-exec-1] DEBUG AntPathRequestMatcher – matches – Checking match of request : ‘/secure/landing.html’; against ‘/resources/**’
当这个应用程序(我们使用完全相同的war文件)进入AWS Beanstalk环境(配置了2个实例)时,会发生以下情况:
1: [http-bio-8080-exec-7] DEBUG DefaultRedirectStrategy – sendRedirect – Redirecting to ‘/secure/landing.html’
2: [http-bio-8080-exec-7] DEBUG HttpSessionSecurityContextRepository – createNewSessionIfAllowed – HttpSession being created as SecurityContext is non-default
3: [http-bio-8080-exec-7] DEBUG HttpSessionSecurityContextRepository – saveContext – SecurityContext stored to HttpSession:
‘org.springframework.security.core.context.SecurityContextImpl@a3421210: /* some details */ Granted Authorities: ROLE_USER’4: [http-bio-8080-exec-7] DEBUG SecurityContextPersistenceFilter – doFilter – SecurityContextHolder now cleared, as request processing completed
5: [http-bio-8080-exec-9] DEBUG AntPathRequestMatcher – matches – Checking match of request : ‘/login.html’; against ‘/resources/**’
逐行比较:
> AWS日志有1个额外行,第2行
> AWS日志显示最后一行第5行从exec-7到exec-9的线程更改(因此它丢失了原始请求重定向并将其替换回/login.html而不是/secure/landing.html)
为了解决AWS中正在发生的问题,将beanstalk重新配置为仅使用1个实例似乎可以隐藏问题.
知道在多节点环境中失败的配置中缺少什么?
解决方法:
使用负载均衡器时,必须记住,每个请求都可以在不同的实例上结束.在这种情况下,服务器1上存储的任何信息都不可用于服务器2.在用户身份验证的情况下,有几种方法可以解决此问题:
>使用第三方维护身份验证信息.
>使用粘性会话 – 将负载均衡器配置为始终转发到一台服务器
在http会话期间
内容总结
以上是互联网集市为您收集整理的java – 负载均衡(AWS Beanstalk)环境中的Spring安全性失败?全部内容,希望文章能够帮你解决java – 负载均衡(AWS Beanstalk)环境中的Spring安全性失败?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。