當前位置:首頁 > 資訊 > info6 > 正文

spring security 4.0 步步深入 1-4

發表于: 2016-11-03   作者:chemmuxin1993   來源:轉載   瀏覽:
摘要: 1.GettingStarted本指南的后面部分提供了對框架架構和實現類的深入討論,如果您想進行任何嚴謹的自定義,您需要了解。在這一部分,我們將介紹SpringSecurity4.0,簡要概述項目的歷史,并稍微考慮一下如何開始使用框架。特別是,我們將看看命名空間配置,它提供了一種比傳統的Springbean方法更簡單的保護應用程序的方法,您必須單獨連接所有實現類。我們還將查看可用的示例應用程序。嘗

1. Getting Started

本指南的后面部分提供了對框架架構和實現類的深入討論,如果您想進行任何嚴謹的自定義,您需要了解。在這一部分,我們將介紹Spring Security 4.0,簡要概述項目的歷史,并稍微考慮一下如何開始使用框架。特別是,我們將看看命名空間配置,它提供了一種比傳統的Spring bean方法更簡單的保護應用程序的方法,您必須單獨連接所有實現類。我們還將查看可用的示例應用程序。嘗試運行并實驗這部分示例是有價值的,甚至在你閱讀后面的部分 - 你可以回到他們,因為你對框架的理解的增加。也請查看項目網站,因為它有建設項目的有用的信息,以及文章,視頻和教程的鏈接。

2. Introduction

2.1 What is Spring Security

Spring Security為基于Java EE的企業軟件應用程序提供全面的安全服務。特別強調支持使用Spring Framework構建的項目,Spring Framework是企業軟件開發的領先Java EE解決方案。如果你不使用Spring來開發企業應用程序,我們熱烈地鼓勵你仔細看看它。對Spring的一些熟悉 - 特別是依賴注入原則 - 將幫助你更容易地加快與Spring Security的速度。

人們使用Spring Security有很多原因,但是大多數人在發現Java EE的Servlet規范或EJB規范的安全特性缺乏典型企業應用程序場景所需的深度后,就會被吸引到該項目。雖然提到這些標準,重要的是要認識到它們在WAR或EAR級別不可移植。因此,如果切換服務器環境,通常需要在新目標環境中重新配置應用程序的安全性。使用Spring Security克服了這些問題,并為您帶來了許多其他有用的可自定義的安全功能。

您可能知道應用程序安全性的兩個主要領域是“身份驗證”和“授權”(或“訪問控制”)。這些是Spring Security目標的兩個主要領域。 “認證”是建立委托人的過程,他們聲稱是委托人(“委托人”通常是指可以在您的應用程序中執行操作的用戶,設備或其他系統)。“授權”是指決定是否允許主體在您的應用程序中執行操作。為了到達需要授權決定的點,認證過程已經建立了主體的身份。這些概念是常見的,而不是特定于Spring Security。

在認證級別,Spring Security支持各種各樣的認證模型。這些認證模型中的大多數由第三方提供,或者由諸如因特網工程任務組的相關標準機構開發。此外,Spring Security提供了自己的一組認證功能。具體來說,Spring Security目前支持所有這些技術的身份驗證集成:

  • HTTP BASIC認證頭(基于IETF RFC的標準)
  • HTTP摘要認證頭(基于IETF RFC的標準)
  • HTTP X.509客戶端證書交換(基于IETF RFC的標準)
  • LDAP(一種非常常見的跨平臺認證需求,特別是在大型環境中)
  • 基于表單的身份驗證(用于簡單的用戶界面需求)
  • OpenID身份驗證
  • 基于預先建立的請求頭的認證(例如Computer Associates Siteminder)
  • JA-SIG中心認證服務(也稱為CAS,這是一種流行的開源單點登錄系統)
  • 遠程方法調用(RMI)和HttpInvoker(Spring遠程協議)的透明認證上下文傳播
  • 自動“記住我”身份驗證(所以您可以勾選一個框,以避免在預定時間段內重新驗證)
  • 匿名身份驗證(允許每個未經身份驗證的呼叫自動承擔特定的安全身份)
  • 運行身份驗證(如果一個調用應該使用不同的安全身份繼續運行,這是有用的)
  • Java認證和授權服務(JAAS)
  • JEE容器自動化(因此,如果需要,您仍然可以使用容器管理身份驗證)
  • Kerberos
  • Java開源單點登錄(JOSSO)
  • OpenNMS網絡管理平臺
  • AppFuse
  • AndroMDA
  • Mule ESB
  • 直接Web請求(DWR)
  • Grails
  • Tapestry
  • JTrac
  • Jasypt
  • Roller
  • Elastic Path
  • Atlassian Crowd
  • 您自己的認證系統(見下文)

許多獨立軟件供應商(ISV)采用Spring Security,因為靈活的認證模型給與他們很大的選擇。這樣,他們可以快速地將其解決方案與其最終客戶所需的任何解決方案集成,而無需進行大量工程或要求客戶端更改其環境。如果上述認證機制都不符合您的需求,Spring Security是一個開放平臺,它很容易編寫自己的認證機制。 Spring Security的許多公司用戶需要與不遵循任何特定安全標準的“傳統”系統集成,Spring Security很樂意與這樣的系統“發揮得很好”。

不考慮認證機制,Spring Security提供了一組深入的授權功能。有三個主要領域 - 授權Web請求,授權是否可以調用方法,以及授權訪問單個域對象實例。為了幫助您了解差異,請分別考慮Servlet規范Web模式安全性,EJB容器管理安全性和文件系統安全性中的授權功能。 Spring Security在所有這些重要領域提供了深入的功能,我們將在本參考指南中探討。

2.2 History

Spring Security于2003年底開始為“Spring的Acegi安全系統”。在Spring開發者的郵件列表中提出了一個問題,詢問是否對基于Spring的安全實現進行了任何考慮。當時Spring社區相對較小(特別是與今天的規模相比),事實上Spring本身只是作為一個SourceForge項目從2003年初開始存在。對這個問題的回答是,這是一個有價值的領域,雖然缺乏的時間目前阻止其探索。考慮到這一點,構建了一個簡單的安全實現,而不是發布。幾個星期后,Spring社區的另一個成員詢問了安全性,并在當時向他們提供了這些代碼。其他幾個請求,到2004年1月左右,大約二十個人正在使用代碼。這些先驅用戶加入了其他人,他們建議SourceForge項目順利,該項目于2004年3月正式成立。在那些早期,該項目沒有任何自己的認證模塊。集裝箱托管安全被依賴于身份驗證過程,與Acegi安全,而不是專注于授權。這首先是合適的,但隨著越來越多的用戶請求額外的容器支持,集裝箱特定認證域界面的根本限制變得清楚。還有一個相關的問題,即向容器的類路徑添加新的JAR,這是最終用戶混淆和配置錯誤的常見來源。隨后引入了Acegi安全特定的身份驗證服務。大約一年后,Acegi Security成為了一個官方的Spring Framework子項目。 1.0.0的最終版本于2006年5月發布 - 經過兩年半以上的積極使用,許多生產軟件項目和數百個改進和社區貢獻。 Acegi Security成為2007年年底的官方Spring Portfolio項目,并被重新命名為“Spring Security”。今天Spring Security享有一個強大和活躍的開源社區。在支持論壇上有關于Spring Security的數千條消息。有一個活躍的開發人員核心的工作代碼本身和一個活躍的社區,也定期共享補丁和支持他們的同行。

2.3 Release Numbering

了解Spring Security發行版號碼是如何工作的很有用,因為它將幫助您確定遷移到項目的未來版本所涉及的工作(或缺乏)。 每個版本使用標準的三元組整數:MAJOR.MINOR.PATCH。 意圖是MAJOR版本不兼容,大規模升級API。 MINOR版本應該在很大程度上保留與舊版本的源和二進制兼容性,認為可能有一些設計更改和不兼容的更新。 PATCH級別應該完全兼容,向前和向后,可能的例外是修復錯誤和缺陷的更改。 您受更改影響的程度將取決于代碼的集成程度。 如果你做了很多定制,你比使用一個簡單的命名空間配置更可能受到影響。 您應該在推出新版本之前徹底測試您的應用程序。

2.4 Getting Spring Security

你可以通過幾種方式掌握Spring Security。 您可以從Spring Security主頁下載一個打包的發行版,從Maven Central存儲庫(或快照和里程碑版本的Spring Maven存儲庫)下載單個jar,或者,您也可以從源代碼構建項目。

2.4.1 Usage with Maven

最小的Spring Security Maven依賴關系集通常如下所示:

<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
</dependencies>

2.4.2 Gradle

最小的Spring Security Gradle依賴項集通常如下所示:

dependencies {
compile 'org.springframework.security:spring-security-web:4.1.3.RELEASE'
compile 'org.springframework.security:spring-security-config:4.1.3.RELEASE'
}

2.4.3 Project Modules

在Spring Security 3.0中,代碼庫已經細分為單獨的jar,這些jar更清楚地區分不同的功能區域和第三方依賴。 如果您使用Maven構建項目,那么這些是將添加到pom.xml的模塊。 即使您不使用Maven,我們建議您參考pom.xml文件,以了解第三方依賴項和版本。 或者,一個好主意是檢查包含在示例應用程序中的庫。

Core - spring-security-core.jar

  • org.springframework.security.core
  • org.springframework.security.access
  • org.springframework.security.authentication
  • org.springframework.security.provisioning

Remoting - spring-security-remoting.jar

提供與Spring Remoting的集成。 你不需要這個,除非你正在編寫一個使用Spring Remoting的遠程客戶端。 主包是
* org.springframework.security.remoting

Web - spring-security-web.jar

包含過濾器和相關的Web安全基礎結構代碼。 任何與servlet API依賴關系。 如果您需要Spring Security Web身份驗證服務和基于URL的訪問控制,您將需要它。 主包是org.springframework.security.web

Config - spring-security-config.jar

包含安全命名空間解析代碼和Java配置代碼。 如果您使用Spring Security XML命名空間進行配置或Spring Security的Java配置支持,則需要它。 主包是org.springframework.security.config。沒有一個類用于在應用程序中直接使用

LDAP - spring-security-ldap.jar

LDAP身份驗證和配置代碼。 如果需要使用LDAP身份驗證或管理LDAP用戶條目,則為必需。頂層包是org.springframework.security.ldap

ACL - spring-security-acl.jar

專用域對象ACL實現。 用于對應用程序中的特定域對象實例應用安全性。 頂層包是org.springframework.security.acls.

CAS - spring-security-cas.jar

Spring Security CAS客戶端集成。 如果要將Spring Security Web身份驗證與CAS單點登錄服務器配合使用。 頂層包是org.springframework.security.cas

OpenID - spring-security-openid.jar

OpenID Web身份驗證支持。 用于根據外部OpenID服務器驗證用戶。 org.springframework.security.openid。 需要OpenID4Java

Test - spring-security-test.jar

為spring security提供測試支持。

2.4.4 Checking out the Source

由于Spring Security是一個開源項目,我們強烈建議您使用git檢查源代碼。 這將讓您完全訪問所有示例應用程序,您可以輕松地構建項目的最新版本。 擁有一個項目的源也是一個巨大的幫助調試。 異常堆棧跟蹤不再是晦澀的黑盒問題,但你可以直接定位到導致問題的行,并解決發生了什么。 源代碼是項目的最終文檔,通常是最簡單的地方來了解一些實際工作原理。 要獲取項目的源,請使用以下git命令:

git clone https://github.com/spring-projects/spring-security.git

這將允許您訪問本地計算機上的整個項目歷史記錄(包括所有版本和分支)。

3. What’s New in Spring Security 4.1

在Spring Security 4.1中修復了100多個RC1問題和60個RC2問題。 這里是改進列表:

3.1 Java Configuration Improvements

  • 簡化UserDetailsService Java配置
  • 簡化AuthenticationProvider Java配置
  • 可配置內容通過LogoutConfigurer協商LogoutSuccessHandler
  • 可通過 SessionManagementConfigurer 配置 InvalidSessionStrategy
  • 能夠使用HttpSecurity.addFilterAt在鏈中的特定位置添加過濾器

4. Samples and Guides (Start Here)

如果你正在尋找開始使用Spring Security,最好的開始是我們的示例應用程序。

Table 4.1. Sample Applications

Source Description Guide
Hello Spring Security Demonstrates how to integrate Spring Security with an existing application using Java-based configuration. Hello Spring Security Guide
Hello Spring Security Boot Demonstrates how to integrate Spring Security with an existing Spring Boot application. Hello Spring Security Boot Guide
Hello Spring Security XML Demonstrates how to integrate Spring Security with an existing application using XML-based configuration. Hello Spring Security XML Guide
Hello Spring MVC Security Demonstrates how to integrate Spring Security with an existing Spring MVC application. Hello Spring MVC Security Guide
Custom Login Form Demonstrates how to create a custom login form. Custom Login Form Guide

(需轉載請首先聯系本人)

spring security 4.0 步步深入 1-4

版權所有 IT知識庫 CopyRight ? 2009-2015 IT知識庫 IT610.com , All Rights Reserved. 京ICP備09083238號
广东25选5开奖结果