大多數Web系統都有權限需求,前面已經了解了它的整個認證過程的原理,這節将講述如何在Tomcat中配置web資源的權限。先以Tomcat預設的認證模式Basic和預設的域UserDatabaseRealm為例,看看如何完成整個配置的。
首先,配置server.xml檔案,配置一個名為UserDatabase的資料源,它綁定的存儲檔案為conf/tomcat-users.xml。然後在Realm節點中引用名為UserDatabase的資料源,這裡的realm屬于Engine容器級别共享。
<Server>
...
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Engine>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Engine>
</Server>
其次,配置tomcat-users.xml檔案,定義一個名為tomcatRole的角色,再定義一個使用者名為tomcat、密碼為tomcat的使用者,并賦予其tomcatRole角色。
<tomcat-users>
<role rolename="tomcatRole"/>
<user username="tomcat" password="tomcat" roles="tomcatRole"/>
</tomcat-users>
最後,配置web應用的web.xml檔案,配置了該web應用security目錄下的資源需要tomcatRole角色才能通路。并配置采用BASIC認證模式。
<security-constraint>
<web-resource-collection>
<web-resource-name>security resource</web-resource-name>
<url-pattern>/security/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>tomcatRole</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>
所有上面全部配置完成後就實作權限認證功能了,當使用者通路/security/*對應的資源時浏覽器會彈出使用者名密碼輸入框,使用者輸入後才可以通路。另外realm和認證模式都可以根據實際情況配置成其他類型。
<a target="_blank" href="https://item.jd.com/12185360.html">點選訂購作者《Tomcat核心設計剖析》</a>