認識安全框架acegi(1)
本系列是講acegi的基本概念,下系列是acegi實戰,主要講acegi在專案中的具體應用;感興趣的可以關注
一、概述
對於任何一個完整的應用系統,完善的認證和授權機制是必不可少的。Acegi Security(以下簡稱Acegi)是一個能為基於Spring的企業應用提供強大而靈活安全訪問控制解決方案的框架,Acegi已經成為Spring官方的一個子專案,所以也稱為Spring Security。它透過在Spring容器中配置一組Bean,充分利用Spring的IoC和AOP功能,提供宣告式安全訪問控制的功能。雖然,現在Acegi也可以應用到非Spring的應用程式中,但在Spring中使用Acegi是最自然的方式。 Acegi可以實現業務物件方法級的安全訪問控制粒度,它提供了以下三方面的應用程式的安全:
URL資源的訪問控制
如所有使用者(包括其名使用者)可以訪問index.jsp登入頁面,而只有授權的使用者可以訪問/user/addUser.jsp頁面。Acegi允許透過正規表示式或Ant風格的路徑表示式定義URL模式,讓授權使用者訪問某一URL匹配模式下的對應URL資源。
業務類方法的訪問控制
Spring容器中所有Bean的方法都可以被Acegi管理,如所有使用者可以呼叫BbtForum#getRefinedTopicCount()方法,而只有授權使用者可以呼叫BbtForum#addTopic()方法。
領域物件的訪問控制
業務類方法代表一個具體的業務操作,比如更改、刪除、審批等,業務類方法訪問控制解決了使用者是否有呼叫某種操作的許可權,但並未對操作的客體(領域物件)進行控制。對於我們的論壇應用來說,使用者可以呼叫BbtForum#updateUser(User user)方法更改使用者註冊資訊,但應該僅限於更改自己的使用者資訊,也即呼叫BbtForum#updateUser()所操作的User這個領域物件必須是受限的。
Acegi透過多個不同用途的Servlet過濾器對URL資源進行保護,在請求受保護的URL資源前,Acegi的Servlet過濾器判斷使用者是否有權訪問目標資源,授權者被開放訪問,而未未被授權者將被阻擋在大門之外。
Acegi透過Spring AOP對容器中Bean的受控方法進行攔截,當使用者的請求引發呼叫Bean的受控方法時,Acegi的方法攔截器開始工作,阻止未授權者的呼叫。
對領域物件的訪問控制建立在對Bean方法保護的基礎上,在最終開放目標Bean方法的執行前,Acegi將檢查使用者的ACL(Aeccess Control List:訪問控制列表)是否包含正要進行操作的領域物件,只有領域物件被授權時,使用者才可以使用Bean方法對領域物件進行處理。此外,Acegi還可以對Bean方法返回的結果進行過濾,將一些不在當前使用者訪問許可權範圍內的領域物件剔除掉——即傳統的資料可視域範圍的控制。一般來說,使用Acegi控制資料可視域未非理想的選擇,相反透過傳統的動態SQL的解決方案往往更加簡單易行。
從本質特性上來說,Servlet過濾器就是最原始的原生態AOP,所以我們可以說Acegi不但對業務類方法、領域物件訪問控制採用了AOP技術方案,對URL資源的訪問控制也使用了AOP的技術方案。使用AOP技術方案的框架是令人振奮的,這意味著,開發者可以在應用程式業務功能開發完畢後,輕鬆地透過Acegi給應用程式穿上安全保護的“鐵布衫”。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29212814/viewspace-1126433/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 認識mysql(1)MySql
- 1. 認識tmuxUX
- Spark 框架安全認證實現Spark框架
- 前端測試框架——認識Jest前端框架
- Spring初步認識-(1)Spring
- 第1章 認識excelExcel
- 淺談Acegi配置
- 從 0 到 1 認識 TypescriptTypeScript
- 我認識的python(1)Python
- Redis(1)_Redis的基本認識Redis
- Django(1) - 初識Django框架Django框架
- From Java EE security to AcegiJava
- RecyclerView從認識到實踐(1)View
- 1.認識作業系統作業系統
- 1. 初始認識 Spring CloudSpringCloud
- python 爬蟲對 scrapy 框架的認識Python爬蟲框架
- Acegi的標籤庫authzauthorize
- (1)分散式搜尋ElasticSearch認識ElasticSearch分散式Elasticsearch
- JMeter學習筆記——認識JMeter(1)JMeter筆記
- Java 容器和泛型(1)認識容器Java泛型
- Flash8教程1:認識工作介面
- Python 學習之路 1——認識 PythonPython
- cloudflare認識1(上傳檔案到桶)Cloud
- 關於 Laravel 框架事件系統的一點認識Laravel框架事件
- 帶你認識Java開發框架是如何使用的Java框架
- WebApp實時開源框架Clouda---認識心得WebAPP框架Cloud
- 無線網路安全——1、WiFi安全基礎知識WiFi
- Python語言認識和實用工具(1)Python
- 第 1 篇:Vue.js 很高興認識你Vue.js
- [敏捷開發實踐](1) 認識敏捷開發敏捷
- Java小白進階筆記(1)-重新認識JavaJava筆記
- 關於shiro安全框架和shiro的認證流程框架
- Android 認識EventBus輕量級事件匯流排框架Android事件框架
- 認識CopyOnWriteArrayList
- 認識DockerDocker
- 認識jqueryjQuery
- JQuery認識jQuery
- 認識 TypeScriptTypeScript