2020/11/17

在Tomcat設置Basic Authentication

摘要

本文概要記錄在Apache Tomcat設定HTTP Basic Authentication的要點及測試方法。 

本文

Apache Tomcat是一個Servlet容器,本身提供了HTTP伺服器的功能,可以透過編輯組態配置檔案來調整設定,設定包括對HTTP Basic Authentication的支援。

在Ubuntu MATE 16.04上安裝Apache Tomcat 8的指令如下。

sudo apt-get install tomcat8

安裝完畢的Apache Tomcat預設未啟用HTTP Basic Authentication,透過瀏覽器對預裝的頁面(index.html)進行測試的畫面如下所示,留意Wireshark封包擷取到的交握封包,其將會得到200 OK的回覆、並停在預期的頁面上。

為了讓Apache Tomcat支援HTTP Basic Authentication需要調整組態設定檔。還需要決定哪些頁面需要限制而哪些頁面不受限制。

這裡準備了2個頁面,其一的index.html不需要HTTP Basic Authentication、而另一的index-leo.html需要HTTP Basic Authentication。

組態設定主要是針對web.xml添加security-constraint元素和login-config。

參照下面摘錄的內容;可以發現security-constraint元素添加了一個url-pattern元素、且內容為index-leo.html,而僅有role-name為tomcat能夠存取。

<security-constraint>
            <display-name>SolrAdmin</display-name>
            <web-resource-collection>
                     <web-resource-name>Protected Area</web-resource-name>
                     <!-- Define the context-relative URL(s) to be protected -->
                     <url-pattern>/index-leo.html</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <!-- Anyone with one of the listed roles may access this area -->
                    <role-name>tomcat</role-name>
            </auth-constraint>
</security-constraint>
 
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>MyAdmin</realm-name>
</login-config>

組態設定還要針對tomcat-users.xml啟用對應的賬號、密碼、與角色。

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>

透過瀏覽器對加以限制的頁面進行存取的畫面如下所示,將會先彈出交談框要求輸入賬號密碼。留意Wireshark封包擷取到的交握封包。

成功通過賬號密碼鑑定時將會先得到401 Unauthorized再得到200 OK的回覆、並停在預期的頁面上。


在指定次數內(這裡是3次)沒通過則號密碼鑑定時將會得到401 Unauthorized的回覆、並停在錯誤頁面上。

備註:若是存取不存在的頁面則會得到404 Not Found的回覆、並停在錯誤的頁面上。

 

參考文獻

https://icemastodon12.pixnet.net/blog/post/69900877-%E8%A8%AD%E5%AE%9A-tomcat8-%E7%B6%B2%E9%A0%81%E5%AF%86%E7%A2%BC%E4%BF%9D%E8%AC%A2-basic-realm-protected

沒有留言:

張貼留言