当前位置:首页 > 资讯 > 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依赖关系集通常如下所示:




org.springframework.security
spring-security-web
4.1.3.RELEASE


org.springframework.security
spring-security-config
4.1.3.RELEASE


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号