在不修改的情况下配置基本身份验证。war

Configure Basic Authentication without modifying .war

我们正在 tomcat 的 webapps 文件夹中部署两个 war 文件,比方说 public.war 和 private.war

我们只想为 private.war(不是所有已部署的 war 文件)设置 HTTP 基本身份验证,但似乎我们必须在展开的 /webapps/private/WEB-INF/web 中配置它.xml(或修改 war 本身),我们希望避免这种情况。

原因是我们正在从第 3 方来源检索 private.war,如果有人将其更新到最新版本,我们对 web.xml 的更改将被覆盖(对吗?)。

有没有一种方法可以在 Tomcat 中仅针对一个特定的上下文路径启用基本身份验证,比如 conf/web.xml 或其他文件?

我们特别希望避免修改已部署(或分解)的 war 文件。

您可以在 $CATALINA_HOME/conf/context.xml 中添加一个配置并在其中添加一个环境,并在您的源代码或 war 文件中的配置文件中将其用作引用 bean,例如:

context.xml:

<Context>
  ...
  <Environment name="username" value="admin"
      type="java.lang.String"/>
  ...
</Context>

security.xml(在您的 war 文件中):

<bean>
id="AuthenticationService"
    class="com.core.auth.AuthenticationService">
    <property name="username" >
        <ref bean="username"/>
    </property>

</bean>

Is there a way to enable Basic Authentication in Tomcat just for one specific context-path

事实上,您需要修改应用程序配置(实际上是 war 文件或已部署的文件)。

We would especially like to avoid modifying the deployed (or exploded) war file

如果你有反向代理(apache httpd、nginx),我建议你强制执行基本身份验证