3

在我们的 web.xml 中,我们有类似的东西

 <security-constraint>
    <auth-constraint>
        <role-name>ROLE_USER</role-name>
    </auth-constraint>
    <web-resource-collection>
        <url-pattern>/app/*</url-pattern>
    </web-resource-collection>
</security-constraint>

这仅适用于我们的生产 Websphere 环境。
现在我们不使用 Websphere 进行测试,我们使用 Jetty 和 JBoss。所以我们有特定的 Spring 配置文件来处理这些环境的不同安全配置。但是 Spring 配置文件范围没有到达 web.xml 并且我们被这些安全约束指令所困扰,这些指令与我们的测试环境中的 Spring Security 冲突。

现在我们可以使用 Maven 配置文件来处理这个问题,但这将涉及超过 1 个构建,我们希望避免这种极端情况。

总而言之,有没有办法不考虑 Jetty 的 web.xml 安全性?(如果您有 JBoss 7 的答案,那就太好了!)

编辑:执行 Jetty 6 时的错误是带有短消息的 http 500 "No Realm"。另一种解决方案可能是自动记录一个默认的虚拟用户,但我不知道这是否可能。

4

1 回答 1

1

方法终于做到了(Jetty 6):

我们在 WEB-INF 中添加了一个 jetty-web.xml:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Set name="securityHandler">
      <New class="mypackage.util.JettySecurityHandler" />
  </Set>
</Configure>

被覆盖的 SecurityHandler:

package mypackage.util;

import org.mortbay.jetty.Request;
import org.mortbay.jetty.Response;
import org.mortbay.jetty.security.SecurityHandler;
import java.io.IOException;

public class JettySecurityHandler extends SecurityHandler {

    @Override
    public boolean checkSecurityConstraints(String pathInContext, Request request, Response response)
            throws IOException {
        return true;
    }
}

这不是很好,因为:
- 自定义代码
- 特定版本(不适用于 Jetty 7 和 8)
但它可以工作。

于 2013-01-28T11:44:49.967 回答