Tomcat原理學習 安全

2021-06-22 10:57:13 字數 1796 閱讀 4976

有些web應用程式的內容是有限制的,只允許有許可權的使用者在提供正確的使用者名稱和密碼的情況下才允許訪問。servlet通過配置部署檔案web.xml來對安全性提供技術支援。本章的主要內容是容器對於安全性限制的支援。

域(realm):

域是用於進行使用者驗證的乙個元件,它可以告訴你乙個使用者名稱密碼對是否是合法的。乙個域跟乙個上下文容器相聯絡,乙個容器可以只有乙個域。可以使用容器的setrealm方法來建立它們之間的聯絡。

乙個域是如何驗證乙個使用者的合法性的?乙個域擁有所有的合法使用者的密碼或者是可以訪問它們。至於它們存放在**則取決於域的實現。在 tomcat的預設實現裡,合法使用者被儲存在tomcat-users.xml檔案裡。但是可以使用域的其它實現來訪問其它的源,如關聯式資料庫。

genericprincipal :

乙個genericprincipal必須跟乙個域相關聯,這個是通過建構函式實現的。

genericprincipal必須擁有乙個使用者名稱和乙個密碼,此外還可選擇性的傳遞一列角色。可以使用hasrole方法來檢查乙個principal是否有乙個特定的角色,傳遞的引數為角色的字串表示形式。

loginconfig 類 :

loginconfig的例項封裝了網域名稱和驗證要用的方法。可以使用loginconfig例項的getrealmname方法來獲得網域名稱,可以使用getauthname方法來驗證使用者。乙個驗證(authentication)的名字必須是下面的之一:basic, digest, form, o或者client-cert。如果用到的是基於表單(form)的驗證,該loginconfig物件還包括登入或者錯誤頁面像對應的url。

tomcat乙個部署啟動的時候,先讀取web.xml。如果web.xml包括乙個login-confgi元素,tomcat建立一loginconfig物件並相應的設定它的屬性。驗證閥門呼叫loginconfig的getrealmname 方法並將網域名稱傳送給瀏覽器顯示登入表單。如果getrealmname名字返回值為null,則傳送給瀏覽器伺服器的名字和埠名

authenticator 類 :

org.apache.catalina.authenticator介面用來表示乙個驗證器。該方介面並沒有方法,只是乙個元件的標誌器,這樣就能使用instanceof來檢查乙個元件是否為驗證器。 catalina提供了authenticator介面的基本實現:org.apache.catalina.authenticator.authenticatorbase類。除了實現authenticator介面外,authenticatorbase 還繼承了org.apache.catalina.valves.valvebase類。這就是說authenticatorbase也是乙個閥門。

可以在org.apache.catalina.authenticator包中找到該介面的幾個類:

basicauthenticator用於基本驗證, formauthenticator用於基於表單的驗證, digestauthentication用於摘要(digest)驗證, sslauthenticator用於ssl驗證。nonloginauthenticator用於tomcat沒有指定驗證元素的時候。nonloginauthenticator類表示只是檢查安全限制的驗證器,但是不進行使用者驗證。

安裝 authenticator 閥門 :

在部署檔案中,只能出現乙個login-config 元素,login-config元素包括了auth-method元素用於定義驗證方法。這也就是說乙個上下文容器只能有乙個loginconfig物件來使用乙個authentication 的實現類。 

authenticatorbase的子類在上下文中被用作驗證閥門,這依賴於部署檔案中auth-method元素的值

Traceroute原理學習

traceroute 可以讓我們看到 ip資料報從一台主機傳到另一台主機所經過的路由。曾經介紹過 ip記錄路由的選項 rr,為什麼不使用這個選項而另外開發乙個新的應用程式 traceroute呢?原因有三 其一,並不是所有的路由器都支援記錄路由這個選項 其二,記錄路由一般是單向的選項,傳送端設定了該...

Spring原理學習

簡介 spring 框架是乙個分層架構,由 7 個定義良好的模組組成。spring 模組構建在核心容器之上,核心容器定義了建立 配置和管理 bean 的方式。組成 spring 框架的每個模組 或元件 都可以單獨存在,或者與其他乙個或多個模組聯合實現。每個模組的功能如下 核心容器 核心容器提供 sp...

Mysql 原理學習

7 27 2 併發控制和鎖的概念 併發會 有可能產生 資料髒讀 多個操作修改 同乙個資料時,產生髒資料。解決併發問題的解決方案 鎖的機制 1 共享鎖 2 排它鎖 讀鎖和寫鎖 select 時 加讀鎖,其他的select 操作可以讀取,但是不能修改 update 時 加寫鎖,其他的 操作不了。鎖的粒度...