2007年11月18日 星期日

Tomcat設定存取驗証 (Basic Authentication in Tomcat)

首先會想作這個設定單純是因為自已寫了份簡單幾頁的html及jsp頁面,但是卻懶得寫帳號密碼的驗証程式,所以為了自已懶與節省時間 :p就利用tomcat本身提供的資料夾存取驗証來完成工作,當你想要存取已經設定好驗証的網頁時就會跳出帳號密碼的對話方塊,驗証正確就進入,驗証不過就丟出HTTP Status 401 error囉!。整個過程相當簡單、容易設定。


測試的實作環境是:

window 2000 server SP4

jdk1.5.0_06

tomcat5.0.28


(1) 首先假設你已經把寫好,要限制存取的網頁放到

CATALINA_HOME/webapps/AuthTest/ (AuthTest的內容就是你要設定限制存取的網站根目錄)


(2) 編寫CATALINA_HOME/webapps/AuthTest/ WEB-INF/ web.xml

在<web-app></web-app>加入下面這一段程式碼


<!-- The Authentication Test Code Start!! -->

<security-constraint>

  <web-resource-collection>

   <web-resource-name>Entire Application</web-resource-name>

   <url-pattern>/*</url-pattern>

  </web-resource-collection>

  <auth-constraint>

   <role-name>shiuken</role-name>

  </auth-constraint>

</security-constraint>

<!-- Define the Login Configuration for this Application -->

<login-config>

 <auth-method>BASIC</auth-method>

 <realm-name>HAO CHANG's LOCUS</realm-name>

</login-config>

<!-- The Authentication Test Code End!! -->


上面一段程式碼即利用<security-constraint><login-config> 元素到 web application的 web.xml 檔中。

上面程式碼的意義中重要的有:

<url-pattern>/*</url-pattern>代表只要存取到AuthTest目錄底下所有的檔案都要進行驗証,若設定為<url-pattern>/util/*</url-pattern>則代表存取AuthTest/util的所有檔案都要進行驗証,另外若寫成<url-pattern>*.jsp</url-pattern>代表存取到jsp檔案才需要驗証。

<role-name>shiuken</role-name>這個元素輸入存取帳號



(3) 編寫CATALINA_HOME/conf/ tomcat-users.xml,在<tomcat-users> </tomcat-users>元素內加入<role> 和 <user> 元素即可

<role rolename="shiuken"/>

<user username="shiuken" password="1234567" roles="shiuken"/>

這邊的username,password設定你自已的帳號密碼,重新啟動tomcat,並在瀏覽器上鍵入http://localhost:8080/AuthTest/就可以看到效果了。

沒有留言:

張貼留言