根據公司項目的開發要求和集合spring security3.0功能,公司將通過數據庫進行對用戶身份驗證和授權,系統將建立5個基礎表進行對權利的管理。
Spring Security3配置說明:最近在學習Spring Security3,感覺功能很強大。但是網上資料不多,學習起來還是有點問題,本著我為人人,人人為我的精神,今天也貢獻點資源,可能不深入,文檔不夠好,請大家多多原諒。
在認識SpringSecurity之前,所有的權限驗證邏輯都混雜在業務邏輯中,用戶的每個操作以前可能都需要對用戶是否有進行該項操作的權限進行判斷,來達到認證授權的目的。類似這樣的權限驗證邏輯代碼被分散在系統的許多地方,難以維護。AOP(Aspect Oriented Programming)和SpringSecurity為我們的應用程序很好的解決了此類問題,正如系統日志,事務管理等這些系統級的服務一樣,我們應該將它作為系統一個單獨的“切面”進行管理,以達到業務邏輯與系統級的服務真正分離的目的。
Spring Security 安全框架的使用例子是留言板應用,打包為board.rar實例:消息留言板應用開發以spring MVC 為web框架、spring Security為安全框架的應用首先創建目錄結構。
一種是全部利用配置文件,將用戶、權限、資源(url)硬編碼在xml文件中。 二種是用戶和權限用數據庫存儲,而資源(url)和權限的對應采用硬編碼配置。 三種是細分角色和權限,并將用戶、角色、權限和資源均采用數據庫存儲,并且自定義過濾器,代替原有的FilterSecurityInterceptor過濾器,并分別實現AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中進行相應配置。
Spring Security是基于Spring的的權限認證框架,實現了Spring Security基于schema的配置方式。 使用http配置 地址資源的訪問控制. 實現UserDetailsService接口,來指定用戶和權限 與Acegi的比較 ,基于命名空間的配置更加簡潔,可維護性更強; 基于命名空間的配置,我們無需再擔心由于過濾器鏈的順序而導致的錯誤 過濾器順序在使用命名空間的時候是被嚴格執行的。它們在初始化的時候就預先被排好序。不僅如此,Spring Security規定,你不能替換那些<http>元素自己使用而創建出的過濾器,比如HttpSessionContextIntegrationFilter, ExceptionTranslationFilter 或 FilterSecurityInterceptor。
Spring Security3的使用方法有4種: 一種是全部利用配置文件,將用戶、權限、資源(url)硬編碼在xml文件中。 二種是用戶和權限用數據庫存儲,而資源(url)和權限的對應采用硬編碼配置。 三種是細分角色和權限,并將用戶、角色、權限和資源均采用數據庫存儲,并且自定義過濾器,代替原有的FilterSecurityInterceptor過濾器,并分別實現AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中進行相應配置。
Spring Security3的使用方法有4種: 一種是全部利用配置文件,將用戶、權限、資源(url)硬編碼在xml文件中。 二種是用戶和權限用數據庫存儲,而資源(url)和權限的對應采用硬編碼配置。 三種是細分角色和權限,并將用戶、角色、權限和資源均采用數據庫存儲,并且自定義過濾器,代替原有的FilterSecurityInterceptor過濾器,并分別實現AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中進行相應配置。
本文檔內容僅僅作為公司權限管理資料用,對于企業來說,權限管理將是系統中的非常重要的一個模塊,權限的設計也是參考相關資料進行整理和補充。系統將通過數據庫進行管理用戶權限。
ConfigAttributeDefinition和ConfigAttributeEditorConfigAttributeDefinition的對象中保存有了一組配置屬性(ConfigAttributes),配置信息都以集合的方式存儲在對象中。作用:信息的載體源碼:
Spring Security(以下簡稱為SS)其前身是大名鼎鼎的ACEGI,后來正式合并至Spring框架,成為Spring框架中一員,由于它支持安全策略比較多,并且集成容易,現在也越來越多的系統采用它來進行安全管理。本系統中也采用它的基于角色的管理策略,以實現系統靈活的安全管理要求。
Spring Security為基于J2EE企業應用軟件提供了全面安全服務。 特別是使用領先的J2EE解決方案-spring框架開發的企業軟件項目。 如果你沒有使用Spring開發企業軟件,我們熱情的推薦你仔細研究一下。 熟悉Spring-尤其是依賴注入原理-將幫助你更快的掌握Spring Security。<br> 人們使用Spring Security有很多種原因, 不過通常吸引他們的是在J2EE Servlet規范或EJB規范中找不到典型企業應用場景的解決方案。 提到這些規范,特別要指出的是它們不能在WAR或EAR級別進行移植。這樣,如果你更換服務器環境, 就要,在新的目標環境進行大量的工作,對你的應用系統進行重新配置安全。 使用Spring Security解決了這些問題,也為你提供了很多有用的,可定制的其他安全特性。
本指南的后面部分提供對框架結構和實現類的深入討論,了解它們,對你進行復雜的定制是十分重要的。在這部分,我們將介紹Spring Security 3.0,簡要介紹該項目的歷史,然后看看如何開始在程序中使用框架。特別是,我們將看看命名控件配置提供了一個更加簡單的方式,在使用傳統的spring bean配置時,你不得不實現所有類。Spring Security為基于J2EE企業應用軟件提供了全面安全服務。 特別是使用領先的J2EE解決方案-spring框架開發的企業軟件項目。 如果你沒有使用Spring開發企業軟件,我們熱情的推薦你仔細研究一下。 熟悉Spring-尤其是依賴注入原理-將幫助你更快的掌握Spring Security。人們使用Spring Security有很多種原因, 不過通常吸引他們的是在J2EE Servlet規范或EJB規范中找不到典型企業應用場景的解決方案。 提到這些規范,特別要指出的是它們不能在WAR或EAR級別進行移植。這樣,如果你更換服務器環境, 就要,在新的目標環境進行大量的工作,對你的應用系統進行重新配置安全。 使用Spring Security解決了這些問題,也為你提供了很多有用的,可定制的其他安全特性。
該系統的安全管理方式是結合Spring Security 2.0實現的。
Spring框架和Acegi安全框架介紹:借助于Spring框架,開發者能夠快速構建結構良好的WEB應用,但現有的Spring框架本身沒有提供安全相關的解決方案。同樣來自于OpenSource社區的Acegi安全框架為實現基于Spring框架的WEB應用的安全控制提供了一個很好的解決方案。Acegi本身就是利用Spring提供的IoC和AOP機制實現的一個安全框架,它將安全性服務作為J2EE平臺中的系統級服務,以AOP Aspect形式發布。所以借助于Acegi安全框架,開發者能夠在Spring使能應用中采用聲明式方式實現安全控制。
Spring Security11個步驟為應用程序添加安全防護歷史與現狀自2003年出現的Spring擴展插件AcegiSecurity發展而來。目前最新版本為3.x,已成為Spring的一部分。為J2EE企業應用程序提供可靠的安全性服務。Authenticationvs.Authorization區分概念驗證與授權驗證這個用戶是誰?用戶身份可靠嗎?授權某用戶A是否可以訪問資源R某用戶A是否可以執行M操作某用戶A是否可以對資源R執行M操作SS中的驗證特點支持多種驗證方式支持多種加密格式支持組件的擴展和替換可以本地化輸出信息SS中的授權特點支持多種仲裁方式支持組件的擴展和替換支持對頁面訪問、方法訪問、對象訪問的授權。
Spring Security中可以使用Acegi-1.x時代的普通配置方式,也可以使用從2.0時代才出現的命名空間配置方式,實際上這兩者實現的功能是完全一致的,只是新的命名空間配置方式可以把原來需要幾百行的配置壓縮成短短的幾十行。我們的教程中都會使用命名空間的方式進行配置,凡事務求最簡。
Spring Security為基于J2EE的企業應用軟件提供了一套全面的安全解決方案。正如你在本手冊中看到的那樣,我們嘗試為您提供一套好用,高可配置的安全系統。安全問題是一個不斷變化的目標,更重要的是尋求一種全面的,系統化的解決方案。 在安全領域我們建議你采取“分層安全”,這樣讓每一層確保本身盡可能的安全,并為其他層提供額外的安全保障。 每層自身越是“緊密”,你的程序就會越魯棒越安全。 在底層,你需要處理傳輸安全和系統認證,減少“中間人攻擊”(man-in-the-middle attacks)。 接下來,我們通常會使用防火墻,結合VPN或IP安全來確保只有獲得授權的系統才能嘗試連接。 在企業環境中,你可能會部署一個DMZ(demilitarized zone,隔離區),將面向公眾的服務器與后端數據庫,應用服務器隔離開。 在以非授權用戶運行進程和文件系統安全最大化上,你的操作系統也將扮演一個關鍵的角色。 操作系統通常配置了自己的防火墻。 然后你要防止針對系統的拒絕服務和暴力攻擊。 入侵檢測系統在檢測和應對攻擊的時候尤其有用。這些系統可以實時屏蔽惡意TCP/IP地址。 在更高層上,你需要配置Java虛擬機,將授予不同java類型權限最小化,然后,你的應用程序要添加針對自身特定問題域的安全配。Spring Security使后者 - 應用程序安全變得更容易。