在配置好Tomcat7/8后,我們往往需要訪問Tomcat7/8的Manager以及Host Manager。就需要在tomcat-users.xml中配置用戶角色來實現。在地址欄輸入:localhost:8080訪問 Tomcat,在打開的界面中,在右上角有這樣三個按鈕:
1. Server Status
2. Manager App
3. Host Manager
可是在我們配置好tomcat-users.xml后,這三個按鈕往往不能都訪問,要么是只能訪問其中一個,或者就是兩個。出現這種問題很有可能是你在配置中,角色沒有添加全,尤其是在第三個按鈕的配置上,第三個按鈕的配置Tomcat7和Tomcat8的配置是不相同的。
為了實現配置讓三個按鈕都能訪問到,我們先看下tomcat-users.xml里面的一段用戶配置:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
<user username="admin" password="admin" roles="manager-script"/>
</tomcat-users>
<role rolename="角色名">這個是用來定義角色的,很明顯rolename的屬性值並不是我們隨意寫的。實際上,Tomcat已經為我們定義了4種不同的角色,也就是4個rolename,我們只需要使用Tomcat為我們定義的這幾種角色就足夠滿足我們的工作需要了。
manager-gui #允許訪問html接口(即URL路徑為/manager/html/*)
manager-script #允許訪問純文本接口(即URL路徑為/manager/text/*)
manager-jmx #允許訪問JMX代理接口(即URL路徑為/manager/jmxproxy/*)
manager-status #允許訪問Tomcat只讀狀態頁面(即URL路徑為/manager/status/*)
特別需要說明的是:manager-gui、manager-script、manager-jmx均具備manager-status的權限,也就是說,manager-gui、manager-script、manager-jmx三種角色權限無需再額外添加manager-status權限,即可直接訪問路徑”/manager/status/*”。
<user username="用戶名" password="密碼" roles="角色(可多個)"/>這個很簡單,就是用來表示用戶的,其中roles對應的就是上面定義的角色,可以有多個角色,多個角色用“,”隔開即可。也可以配置多個用戶。
需要訪問前兩個按鈕,只需配置manager-*(4個按需配置)即可。
需要訪問第三個按鈕,需要配置 admin-gui(HTML UI接口)或admin-script(純文本接口)。
如果都要訪問,配置在一起即可。
下面根據Tomcat7和Tomcat8分別貼出用戶配置:
1、Tomcat7訪問Server Status、Manager App、Host Manager的配置。
聲明:此配置不注重安全性,只是測試。具體根據需求可刪減
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="admin,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>
2、Tomcat8訪問Server Status、Manager App、Host Manager的配置。
聲明:此配置不注重安全性,只是測試。具體根據需求可刪減
Tomcat8如果在上面配置的基礎上,訪問時會報403錯誤,所以需要修改,如果沒有的話新建conf/Catalina/localhost/manager.xml 文件。
配置內容如下:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
原文來自與鄧威的博客
https://blog.csdn.net/weixian52034/article/details/53218584