我已经在计算机上安装了 Tomcat,它运行良好。我可以登录到管理管理器。我已部署一个.war
可以在 Tomcat 管理器上查看的文件。文件的名称是shim
(实际上我正在安装freeshim
)。
当我尝试使用浏览器访问 shim 时,192.168.1.65:8080/shim
我得到了一个 Web 管理界面shim
。这是我收到的消息:
这是 FreeSHIM 的 Web 管理界面。Web 服务位于“此处”。
当我单击“此处”来配置 Freeshim 时,出现错误:
HTTP 状态 403-访问请求的资源被拒绝。
我哪里做错了?我该如何更改此权限?
答案1
HTTP 状态 403(访问请求的资源被拒绝)可能表明您输入了 3 个以上的错误凭据(请尝试其他 Web 浏览器)或者您的配置存在问题。
如果您未更改任何配置文件,请检查conf/tomcat-users.xml
安装中的文件 ( locate tomcat-users.xml
)。该文件必须包含允许您使用 Tomcat webapp 的凭据。
例如,要为名为tomcat
且密码为的用户添加 manager-gui 角色s3cret
,请将以下内容添加到上面列出的配置文件中:
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
然后您可以从/manager/html
(例如,配置更改后重新加载)访问您的 web 应用程序管理器。
阅读更多:管理应用程序使用方法
如果您尝试实施自己的安全约束(在web.xml
),请尝试以下示例(</web-app>
结束之前):
<!-- This security constraint protects your webapp interface. -->
<login-config>
<!-- Define the Login Configuration -->
<auth-method>BASIC</auth-method>
<realm-name>Webapp</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
<!-- Specifying a Secure Connection -->
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL (forced SSL), INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- Authorization, see: tomcat-users.xml -->
<security-role>
<role-name>*</role-name>
</security-role>
如果问题仍然存在,请尝试:
- 检查你是否编辑了正确的 XML 文件,
- 验证你的 XML 文件,
catalina.sh configtest
例如xmlstarlet val /etc/tomcat?/*.xml /var/lib/tomcat7/webapps/*/WEB-INF/*.xml
, - 您的
<url-pattern>
匹配项<security-constraint>
或设置为/*
, - 检查你的 Tomcat 日志(例如
/var/log/tomcat7
), - 增加日志记录级别(
INFO
->FINE
/FINEST
)logging.properties
或log4j.properties
(INFO、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST 或 ALL),重新启动 Tomat 并检查日志, - 如果日志中没有任何内容,请检查您是否检查了正确的日志(
sudo lsof | grep -E "java.*(out|txt|log)$"
,tail -f /var/log/tomcat7/*.log /var/log/tomcat7/*.txt /var/log/tomcat7/*.out
), - 使用
log4j
日志系统时,请确保正确初始化通过将库log4j.properties
放入正确的文件夹并进行配置, 使用 cURL 测试基本身份验证:
无需凭证:
$ curl -vv http://example.com:8983/solr/
正常情况下请求应该返回HTTP/1.1 401 未授权和“万维网认证“标题应该指示基本的需要身份验证。
凭证:
$ curl -vv -u tomcat:tomcat http://example.com:8983/solr/
请求应使用“授权”标头发送,并应进行身份验证。如果您的凭据无效,您应该收到:HTTP/1.1 401 未授权如果用户已经通过身份验证,但没有权限查看资源,您应该获得:HTTP/1.1 403 禁止。
也许用户锁定机制已被激活身份验证尝试失败次数过多(锁定领域),
手动停止并运行 Tomcat (方法与:相同
ps wuax | grep ^tomcat
),例如:# ps wuax | grep ^tomcat tomcat7 884 /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties ... org.apache.catalina.startup.Bootstrap start $ /etc/init.d/tomcat7 stop $ sudo sudo -u tomcat7 /usr/lib/jvm/java-7-openjdk-amd64/bin/java ... -Dorg.apache.catalina.level=FINEST org.apache.catalina.startup.Bootstrap start
或者开始使用
catalina.sh
如下脚本:$ . /etc/default/tomcat7 $ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 CATALINA_HOME=/usr/share/tomcat7 CATALINA_BASE=/var/lib/tomcat7 CATALINA_PID=/var/run/tomcat7.pid CATALINA_TMPDIR=/tmp LOGGING_CONFIG="-Dorg.apache.catalina.level=FINEST" $ /usr/share/tomcat7/bin/catalina.sh run
或者调试模式:
$ JPDA_SUSPEND=y catalina.sh jpda start
并检查您的
catalina.out
日志。最后的手段是通过以下方式调试过程:
sudo strace -fp PID
。
答案2
确保运行 tomcat 的用户可以访问 FreeShim 所在的文件夹。
sudo chmod -R a+rwx < dir of FreeShim >
这对我有用。