我有一个由Tomcat提供服务的java应用程序(即http://111.222.333.444:8080/myapp)。我的客户希望这个应用程序响应一个友好的域(即http://client.example.com)。我不太擅长Apache或Tomcat,但我将Apache配置成这样来执行重定向:
<VirtualHost 111.222.333.444:80>
ServerName client.example.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://111.222.333.444:8080/myApp/
ProxyPassReverse / http://111.222.333.444:8080/myApp/
ProxyPassReverseCookieDomain 111.222.333.444 client.example.com
ProxyPass /login.html http://111.222.333.444:8080/login.html
ProxyPassReverse /login.html http://111.222.333.444:8080/login.html
</VirtualHost>
这对于为http://client.example.com下的应用程序提供服务非常有效。但是,我有一个使用Spring Security实现的登录页面。从http://111.222.333.444:8080/myapp/login.html访问时,该登录可以正常工作。但是,当我从http://client.example.com/login.html访问它并输入有效的用户名和密码时,它只是再次加载登录页面,没有错误。
我的WebSecurityConfigurerAdapter如下所示。如果不将绝对URL传递给loginPage(),我甚至无法让它正确加载登录页面。
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/admin/**")
.hasRole("ADMIN")
.and()
.formLogin()
.loginPage("http://client.example.com/login.html")
.and()
.logout()
.logoutSuccessUrl("/");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN");
}
}
我的登录页面如下所示:
<form name="f" method="post" action="/login.html">
<fieldset>
<legend>Please Login</legend>
<label for="username">User</label>
<select id="username" name="username">
<option value="-1"></option>
<option value="admin">admin</option>
</select>
<label for="password">Password</label>
<input type="password" id="password" name="password"/>
<div>
<button type="submit" role="button"><span>Login</span></button>
</div>
</fieldset>
</form>
所以当我访问http://client.example.com/admin/test.html时,我被正确地重定向到http://client.example.com/login.html。但是当我尝试用“admin”/“admin”登录时,它只是在http://client.example.com/login.html再次加载登录页面,没有任何错误。apache日志、tomcat日志和应用程序日志没有告诉我任何有用的信息。
我认为这与Apache代理在Spring Security中的性能不好有关,因为它在直接访问Tomcat应用程序时可以正常工作,但我不确定。
Apache版本:Apache/2.2.31(Unix)
Spring Security版本:3.2.6.Release
Tomcat版本:Apache Tomcat/7.0.42
Java版本:Java 1.7
我认为您的登录表单操作不应该指向您的登录页面URL,而是
/j_spring_security_check
UsernamePasswordAuthenticationFilter正在寻找它来模拟身份验证过程。如果您不想使用/j_spring_security_check,可以通过在FormLoginConfigurer上设置调用loginProcessingUrl方法,通知UsernamePasswordAuthenticationFilter查找另一个URL:
formlogin()
.loginProcessingUrl('/custom_login_url')
.loginPage("http://client.domain.com/login.html")
我已经在我的 Web 应用程序中配置了 SSL。我已经按照所需的步骤在我的 Tomcat 中安装了证书。 我一直关注的导师是https://www.mulesoft.com/tcat/tomcat-security 我已经强制使用 https over http,这意味着任何对 http 的请求都将转发到 https。我在服务器中进行了以下更改.xml 查看更多:https://www.mules
问题内容: __Apache 环境中心 尝试设置从http到https的自动重定向 我尝试将以下内容添加到我的httpd.conf中,但是没有用 有任何想法吗? 问题答案: 我实际上已经遵循了这个示例,并且对我有用:) 然后做:
我正在尝试在tomcat上运行的servlet中使用 ,该servlet从apache服务器接收来自浏览器的请求。因此,任何重定向都将url的'ip.ip.ip'或'someurl.com'部分替换为'localhost:8080'(据我所知,这是因为tomcat将请求源标识为apache服务器地址)。
我有两个在Tomcat7.0下运行的web应用程序 https://secure.example.com:8443 http://insecure.example.com:8080 null 是否可以用单个tomcat实例来配置它?
问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通
问题内容: 是否可以在现有的Java Apache Tomcat项目中引入osgi-equinox?据我了解,OSGI必须在某种“容器”中运行。我将如何整合它? 我还使用Jersey来获取RESTful资源。 问题答案: 在此桥模型中,安装了一个特殊的servlet,Tomcat调用该servlet来处理请求。OSGi运行时是从该servlet内生成的,但是OSGi运行时本身(例如,春分点)与HT