Tomcat 9.0.6 HostManager页面 403 Access Denied 错误

版本:Tomcat 9.0.6

问题:访问HostManager页面出现 Access Denied 错误

403 Access Denied
You are not authorized to view this page.

By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you'll need to edit the Host Manager's context.xml file.

If you have already configured the Host Manager application to allow access and you have used your browsers back button, used a saved book-mark or similar then you may have triggered the cross-site request forgery (CSRF) protection that has been enabled for the HTML interface of the Host Manager application. You will need to reset this protection by returning to the main Host Manager page. Once you return to this page, you will be able to continue using the Host Manager application's HTML interface normally. If you continue to see this access denied message, check that you have the necessary permissions to access this application.

If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp.

For example, to add the admin-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above.

<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="admin-gui"/>
Note that for Tomcat 7 onwards, the roles required to use the host manager application were changed from the single admin role to the following two roles. You will need to assign the role(s) required for the functionality you wish to access.

admin-gui - allows access to the HTML GUI
admin-script - allows access to the text interface
The HTML interface is protected against CSRF but the text interface is not. To maintain the CSRF protection:

Users with the admin-gui role should not be granted the admin-script role.
If the text interface is accessed through a browser (e.g. for testing since this interface is intended for tools not humans) then the browser must be closed afterwards to terminate the session.

 

通过查看英文的报错:If you wish to modify this restriction, you'll need to edit the Host Manager's context.xml file.

打开webapps,打开\tomcat\apache-tomcat-9.0.6\webapps\host-manager\META-INF\context.xml

参考:https://www.cnblogs.com/luoruiyuan/p/6518508.html的博客,做了以下的修改。

1 <Context antiResourceLocking="false" privileged="true" >
2   <Valve className="org.apache.catalina.valves.RemoteAddrValve"
3          allow="^.*$" />
4   <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
5 </Context>

将127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1这里的正则表达式修改为所有人都可以访问后,重启Tomcat再在另外一个浏览器IE打开还是出现403错误,并没有解决问题,于是只得再次阅读英文的报错,以及提示信息:

If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp. 

For example, to add the admin-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above. 
<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="admin-gui"/>

所以在路径\tomcat\apache-tomcat-9.0.6\conf\tomcat-users.xml 下增加一个admin-gui role

1  <role rolename="manager-gui"/>
2   <role rolename="admin-gui"/>
3   <user username="tomcat" password="sakura" roles="manager-gui,admin-gui"/>

重启Tomcat,再次刷新页面,完美解决问题:)

小结:

这次换用Tomcat 9 出现问题并没有照搬网上的解决方法,而是根据报错的情况,参考英文文档去解决问题,所以遇到问题首先想到的应该是根据报错的情况,尝试着先单独的去解决问题,而不是照本宣科的生搬硬套网上的解决办法,这个很重要🌚。ps:(英文水平真的有待提高/😊)

2018-04-12     01:23:30

 

posted @ 2018-04-12 01:25    阅读(2871)  评论(0编辑  收藏  举报