1. 程式人生 > >Spring Security學習筆記-常見驗證模式

Spring Security學習筆記-常見驗證模式

常見驗證模式

  1. Basic
      一種基於challenge-response的認證模式,針對特定的資源,需要提供使用者名稱和密碼認證後,才可訪問,其中密碼是需要明文傳輸的。一個請求到來時,瀏覽器先彈出對話方塊,讓使用者輸入使用者名稱和密碼並用base64進行編碼,實際是,以“使用者名稱:密碼”的形式進行base64編碼,瀏覽器會在http的報文頭部,加入base64編碼的內容,伺服器解析出來這些資訊並認證通過才可繼續訪問。使用這種認證方式有兩個明顯的缺點,第一個它是無狀態的導致每次通訊都要帶上認證資訊,即使是已經認證過的資源;第二它的傳輸安全性不足,認證資訊用base64編碼,基本上就是明文編碼,很容易被擷取並盜用認證資訊。
  2. Digest
       主要是為了解決Basic模式的安全問題,用於替代原來的basic認證模式。Digest也是採用了challenge-response的認證模式,當訪問特定的資源時,瀏覽器還是彈出對話方塊,讓使用者輸入使用者名稱和密碼,瀏覽器會對使用者名稱,密碼,http請求方法,被請求資源uri等組合後進行MD5運算,之後把運算得到的摘要資訊傳送給伺服器。伺服器web容器,獲取到http報文頭部相關認證資訊後,從中獲取到username,根據username獲取對應的密碼,同樣對使用者名稱,密碼,http請求方法,被請求資源uri等組合進行MD5運算,計算的結果和response進行比較,如果相同才算認證通過。通過雜湊演算法對通訊雙方身份的認證十分常見,它的好處就是不必把包含密碼的資訊對外傳輸,只需要將這些密碼資訊加入一個對方給定的隨機值,然後來計算出雜湊值,最後將雜湊值傳給對方,對方就可以認證你的身份。Digest模式避免了密碼在網路上的明文傳輸,提高了安全性,但它仍然存在缺點,比如認證的報文被攻擊者攔截到,攻擊者也可以獲取到資源。
  3. X.509
       X.509是一種非常通用的證書格式,所有的X.509證書包含一下資料:版本號,證書持有人的公鑰,證書的序列號。其中,證書的序列號是由CA(證書頒發機構)給予的每一個證書分配的唯一的數字型編號,當證書被取消時,實際上是將指定證書的序列號放入由CA簽發的證書的黑名單列表中,這也是序列號唯一的原因。除此之外,x.509證書還包含主題資訊,證書的有效期,認證機構,釋出人的數字簽名,簽名的演算法等等。x.509格式的證書目前已經被微軟網景和其他許多公司廣泛的應用於對電子郵件資訊進行簽名,對程式程式碼進行認證,以及對許多其它型別的資料進行認證等等。
  4. LDAP
       LDAP(Ligntweight Directory Access Protocol)是輕量級的目錄訪問協議。企業內部需要認證的服務有很多,員工需要記住很多的密碼,即使對這些服務進行相同的密碼設定,也存在著很大的安全隱患。許多企業都會遇到這種情況,每一個新員工到來的時候管理員都要初始化很多密碼,而這些密碼都被設定成了類似123456這種的弱密碼。由於各種軟體的認證機制之間沒有使用一個統一的標準,管理員無法一次性的修改所有服務的密碼,這導致很多即使是入職很久的員工,都還在使用這種眾所周知的密碼。另外一個比較嚴重的問題,出現在公司增加內部服務的時候,管理員需要重新為所有的員工初始化新的賬戶資訊,對於一個有上千名員工的企業來說這將是一個災難,如果可以為各種軟體提供一個標準的認證機制,所有軟體就可以不再使用獨有的使用者管理方法,而是通過這種統一的認證機制進行使用者認證,這樣就解決了很多企業遇到的問題。統一身份認證主要是改變原有的認證策略,使需要認證的軟體都通多LDAP進行認證,使用者的所有資訊都儲存在LDAPServer中,終端使用者在需要使用公司內部服務的時候,都需要通過LDAP伺服器的認證,每個員工只需要記住一個密碼,在需要修改使用者資訊的時候,可以通過管理員提供的web介面,直接修改自己在LDAPServer中的資訊即可。目前,市面上的大型公司的內部系統基本在使用LDAP認證。