天天看點

如何讓你的web具備權限認證

大多數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>

繼續閱讀