基于 Tomcat 表单的身份验证不保护 catalina.out 登录到浏览器

标签 tomcat

我的两部分目标是:
1.记录Tomcat的日志(例如catalina.out到浏览器)-成功
2. 要求对这些日志文件进行身份验证 - 不成功

以下更改后第 1 部分成功:

Add file tomcat/conf/Catalina/localhost/logs.xml

With the following configuration:

<Context override="true" docBase="/opt/tomcat/logs" path="/logs" />

可以看到日志路径: http://www.domainname.com/logs/catalina.out

进行以下配置更改后,第 2 部分未成功。该文件不受浏览器中基于表单的身份验证的保护(即访问 http://www.domainname.com/logs/catalina.out 时没有重定向登录)。

根本原因是日志目录的相对上下文吗?

以下是我所做的配置更改:

2A. Within tomcat/conf/tomcat-users.xml

Add the following configuration:

<role rolename="role1"/>
    <user username="roleUser1" password="PASSWORD" roles="role1"/>

2B. Within tomcat/conf/web.xml

Add the following configuration:

<security-constraint>
    <display-name>Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Profile Area</web-resource-name>
        <url-pattern>/logs/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>role1</role-name>
            </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Form-Based Authentication Area</realm-name>
    <form-login-config>
        <form-login-page>/loginPage</form-login-page>
        <form-error-page>/errorPage</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <role-name>role1</role-name>
</security-role>

最佳答案

您的应用程序上下文路径是 /logs , 所以你的 <url-pattern>应设置为 *而不是 /logs/* .

为什么不保护整个 URL 空间呢?这应该是 100% 的行政申请。

编辑 2018-08-27

不要修改 Tomcat 的 conf/web.xml 非常重要。这是服务器上所有 Web 应用程序 的默认部署描述符。它不是某种涵盖整个服务器的配置。所以,试图保护/logs从那里实际上保护了 URL 前缀 /logs/*在每个应用程序中分开,而不是您决定放在 /logs 下的单个应用程序.

相反,您应该修改应用程序的 WEB-INF/web.xml部署描述符。

所以,回去恢复Tomcat的conf/web.xml到它的原始状态,然后将您的自定义配置放入 /logs应用程序本身。我不会使用 /opt/tomcat/logs作为 docBase为申请。相反,我会部署 logs应用到webapps像往常一样,并将其配置为使用 /opt/tomcat/logs作为只读 resource (尝试使用 PreResources )。

关于基于 Tomcat 表单的身份验证不保护 catalina.out 登录到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45900230/

相关文章:

java - wordpress servlet 映射不工作

spring - 几乎相同的网络应用程序在提供静态内容时表现不同

java - Spring +AngularJs + Tomcat 9.0 - 发送PUT请求时出现403错误

Javascript - XMLHttpRequest 如何同时发送多个请求?

eclipse - tomcat 7 @WebServlet

java - 如何提高spring-mvc和tomcat中静态资源的流式处理

hibernate - Grails应用的tomcat服务器如何实现缓存自动刷新

java - 添加特定 servlet 时 Tomcat 服务器未启动

tomcat - HAProxy - 传输期间连接重置

apache - aar 存档中的 Jar 依赖项