摘要
本文概要記錄在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
沒有留言:
張貼留言