08 2020 档案
摘要:25.1 AOP Alliance (MethodInvocation) Security Interceptor(AOP联盟(方法定位)安全拦截器) 方法安全性是通过使用MethodSecurityInterceptor来实现的,它保护方法位置的安全。根据配置方法的不同,拦截器可能特定于单个bea
阅读全文
摘要:大多数Spring Security用户将在使用HTTP和Servlet API的应用程序中使用该框架。在这一部分中,我们将了解Spring Security如何为应用程序的web层提供身份验证和访问控制功能。我们将从名称空间的外表后面看,看看哪些类和接口实际上是为了提供web层安全性而组装的。在某
阅读全文
摘要:22.1 Overview(概要) 采用“默认拒绝”通常被认为是良好的安全实践,在这种情况下,您明确指定什么是允许的,什么是不允许的。定义未经身份验证的用户可以访问的内容也是类似的情况,尤其是对于web应用程序。许多网站要求用户必须通过除了几个网址之外的任何东西的认证(例如主页和登录页面)。在这种情
阅读全文
摘要:Spring框架为CORS提供了一流的支持。CORS必须在spring安全之前处理,因为预请求的申请将不包含任何cookies。如果请求不包含任何cookies,并且Spring Security是第一个,请求将确定用户未通过身份验证(因为请求中没有cookies ),并拒绝它。 确保首先处理COR
阅读全文
摘要:本节描述了Spring Security提供的测试支持。 要使用spring安全测试支持,您必须将spring-security-test-4.2.15.RELEASE.jar作为项目的一个依赖项。 问题是“作为一个特定的用户,我们如何最容易地运行测试?”答案是使用@WithMockUser。以下测
阅读全文
摘要:一旦你熟悉了设置和运行一些基于命名空间配置的应用程序,你可能希望开发更多的框架去理解命名空间门面后面实际上是如何运转。类似大部分软件, Spring Security有一定的中央接口,以及通常在整个框架中使用的概念抽象类。在参考指南的这一部分,我们将看看其中的一些,看看它们如何协同工作去支持Spri
阅读全文
摘要:问题跟踪 Spring Security 使用JIRA来管理bug报告和改进请求,如果你发现错误,请使用JIRA记录报告。不要在支持论坛,邮件列表,或通过电子邮件项目的记录。这些方法是临时的,我们更喜欢使用正式的流程。 如果可能的话,在你的问题的报告摸清提供一个JUnit测试,演示任何不正确的行为。
阅读全文
摘要:Hello Spring Security 演示如何将Spring Security与现有的Java配置应用程序集成。 Hello Spring Security Guide Hello Spring Security Boot 演示如何将Spring Security与现有的Spring Boot
阅读全文
摘要:除其他外,SpringSecurity4.2为SpringFramework5提供了早期支持。您可以找到4.2.0.M1、4.2.0.RC1、4.2.0.RELEASE的更改日志,它关闭了80多个问题。绝大多数这些特征都是由社区贡献的。下面你可以找到这个版本的亮点。 3.1Web Improveme
阅读全文
摘要:2.1什么是spring安全? Spring Security为基于Java EE的企业软件应用程序提供全面的安全服务。特别强调支持使用Spring框架构建的项目,在企业软件开发方面,Spring框架领先Java EE解决方案。如果您没有使用Spring来开发企业应用程序,我们强烈建议您仔细研究一下
阅读全文
摘要:本指南后面的部分将深入讨论框架体系结构和实现类,如果要进行任何认真的定制,您需要了解这些类。在这一部分中,我们将介绍SpringSecurity4.0,简要概述项目的历史,并稍微温和地了解如何开始使用该框架。特别是,与传统的Spring bean方法相比,命名空间配置提供了一种更简单的保护应用程序的
阅读全文
摘要:32.1 Overview JA-SIG产生了一个企业范围的单点登录系统,称为CAS。与其他计划不同,JA-SIG的中央认证服务是开源的、广泛使用的、易于理解的、独立于平台的,并且支持代理功能。Spring Security完全支持CAS,并提供了从Spring Security的单应用程序部署到由
阅读全文
摘要:31.1 Overview Spring Security提供了一个能够将身份验证请求委托给Java身份验证和授权服务(JAAS)的包。这个包将在下面详细讨论。 31.2 AbstractJaasAuthenticationProvider 抽象身份验证提供程序(AbstractJaasAuthen
阅读全文
摘要:Spring Security有自己的标签库,为访问安全信息和在JSP中应用安全约束提供基本支持。 30.1 Declaring the Taglib 要使用任何标签,您必须在JSP中声明安全标签库: 30.2 The authorize Tag 该标记用于确定是否应该对其内容进行评估。在Sprin
阅读全文
摘要:29.1 Overview 组织通常将LDAP用作用户信息的中央存储库和身份验证服务。它还可以用来存储应用程序用户的角色信息。 对于如何配置LDAP服务器有许多不同的场景,因此Spring Security的LDAP提供程序是完全可配置的。它使用独立的策略接口进行身份验证和角色检索,并提供默认实现,
阅读全文
摘要:有些情况下,您希望使用Spring Security进行授权,但是在访问应用程序之前,用户已经被某个外部系统可靠地验证过了。我们将这些情况称为“预认证”场景。示例包括X.509、Siteminder和应用程序运行所在的Java EE容器的身份验证。使用预认证时,Spring Security必须 1
阅读全文
摘要:27.1 Overview 复杂的应用程序通常会发现需要定义访问权限,而不仅仅是在web请求或方法调用级别。相反,安全决策需要包括谁(身份验证)、在哪里(方法位置)和什么(某些域对象)。换句话说,授权决策还需要考虑方法调用的实际域对象实例主体。 假设你正在为宠物诊所设计一个应用程序。基于Spring
阅读全文
摘要:Spring Security 3.0引入了使用Spring EL表达式作为授权机制的能力,此外还有配置属性和访问决策投票者的简单使用,这在前面已经看到过。基于表达式的访问控制建立在相同的体系结构上,但是允许复杂的布尔逻辑封装在单个表达式中。 26.1 Overview Spring Securit
阅读全文
摘要:24.1 Authorities 正如我们在技术概述中看到的,所有身份验证实现都存储了一个授权对象列表。这些代表委托人被授予的权力。授权权限对象(GrantedAuthority )由身份验证管理器(AuthenticationManager )插入到身份验证对象(Authentication )中
阅读全文
摘要:Spring Security中的高级授权功能是它受欢迎的最重要的原因之一。无论您选择如何进行身份验证,无论是使用Spring Security提供的机制和提供程序,还是与容器或其他非Spring Security身份验证机构集成,您都会发现授权服务可以以一致且简单的方式在您的应用程序中使用。 在这
阅读全文
摘要:spring Security 4增加了对保护spring的网络套接字支持的支持。本节描述如何使用Spring Security的网络套接字支持。 您可以在samples/javaconfig/chat中找到一个完整的WebSocket安全性工作示例。 直接JSR-356支持 Spring Secu
阅读全文
摘要:与HTTP会话相关的功能由SessionManagementFilter(会话管理过滤器) 和SessionAuthenticationStrategy(会话身份验证策略)接口的组合来处理,过滤器将这些接口委托给它们。典型的用法包括会话固定保护、防止攻击、检测会话超时以及限制经过身份验证的用户可以同
阅读全文
摘要:本节讨论Spring Security对响应中添加各种安全头的支持。 20.1 Default Security Headers(默认安全表头) Spring Security允许用户轻松地注入默认安全头,以帮助保护他们的应用程序。Spring Security的默认设置是包含以下标题: 只有在HT
阅读全文
摘要:本节讨论Spring Security的跨站点请求伪造(CSRF)支持。 18.1 CSRF Attacks(CSRF攻击) 在我们讨论Spring Security如何保护应用程序免受CSRF攻击之前,我们将解释什么是CSRF攻击。让我们看一个具体的例子来更好地理解。假设您的银行网站提供了一个表单
阅读全文
摘要:17.1 Overview 记住我或持久登录身份验证是指网站能够记住会话之间主体的身份。这通常是通过向浏览器发送一个cookie来实现的,在以后的会话中会检测到该cookie,并导致自动登录。Spring Security为这些操作的发生提供了必要的挂钩,并且有两个具体的记忆实现。一种使用哈希来保持
阅读全文
摘要:基本认证和摘要认证是网络应用中流行的替代认证机制。基本身份验证通常与无状态客户端一起使用,无状态客户端会在每次请求时传递其凭据。将它与基于表单的身份验证结合使用是很常见的,在这种情况下,应用程序既可以通过基于浏览器的用户界面使用,也可以作为web服务使用。但是,基本身份验证会以纯文本形式传输密码,因
阅读全文
摘要:本节描述了Spring安全性是如何与Servlet API集成的。 servletapi-xml示例应用程序演示了这些方法的用法。 15.1 Servlet 2.5+ Integration(Servlet 2.5+集成) 15.1.1 HttpServletRequest.getRemoteUse
阅读全文
摘要:在使用Spring Security的web应用程序中,总会用到一些关键的过滤器,所以我们首先来看看这些过滤器及其支持类和接口。我们不会涵盖所有特性,所以如果你想了解完整的情况,一定要看看Javadoc。 14.1 FilterSecurityInterceptor(过滤器安全性拦截器) 在讨论一般
阅读全文
摘要:Spring Security的网络基础设施完全基于标准的servlet过滤器。它在内部不使用servlet或任何其他基于servlet的框架(如Spring MVC),因此它与任何特定的web技术都没有强有力的链接。它处理HttpServletRequest和HttpServletResponse
阅读全文
摘要:Spring Security提供了与Spring MVC测试的全面集成。 12.1 Setting Up MockMvc and Spring Security(设置MockMvc和Spring安全性) Spring MVC Test提供了一个方便的接口,称为RequestPostProcesso
阅读全文
摘要:本节演示如何使用Spring安全性的测试支持来测试基于方法的安全性。我们首先介绍一个MessageService,它要求用户通过身份验证才能访问它。 public class HelloMessageService implements MessageService { @PreAuthorize(
阅读全文
摘要:既然我们已经对Spring安全体系结构及其核心类有了一个高层次的概述,那么让我们仔细看看一两个核心接口及其实现,特别是AuthenticationManager、UserDetailsService和AccessDecisionManager。这些在本文档的其余部分中经常出现,所以您知道它们是如何配
阅读全文
摘要:9.1 Runtime Environment 运行环境 Spring Security 3.0需要Java 5.0运行时环境或更高版本。由于Spring Security的目标是以独立的方式运行,所以没有必要将任何特殊的配置文件放入Java运行时环境中。特别是,不需要配置特殊的Java身份验证和授
阅读全文
摘要:该项目提供了几个示例web应用程序。为了避免下载量过大,分发zip文件中仅包含“教程”和“联系人”示例。其他的可以直接从你可以获得的资源中构建,如介绍中所述。这个项目很容易自己构建,在https://spring.io/spring-security/.的项目网站上有更多的信息。本章中提到的所有路径
阅读全文
摘要:6.1 Introduction(简介) 命名空间配置在Spring框架的2.0版本就可以使用了,他允许你通过额外的XML架构元素补充传统的Spring bean应用程序上下文。你可以从Spring的参考文档找到更多信息 Reference Documentation.。命名空间元素可以简单的允许配
阅读全文
摘要:在Spring 3.1中,对 Java Configuration (Java配置)的一般支持被添加到Spring框架中。自Spring Security 3.2以来,就有了Spring Security对Java配置的支持,用户可以轻松配置Spring Security,而无需使用任何XML。 如
阅读全文
摘要:Spring Security为基于Java EE的企业软件应用程序提供了一个全面的安全解决方案。当您在本参考指南中冒险时,您会发现,我们试图为您提供一个有用且高度可配置的安全系统。 安全是一个不断变化的目标,追求全面的、全系统的方法非常重要。 在安全领域,我们鼓励您采用“安全层”,以便每一层都尽可
阅读全文
摘要:第44.1节,“一般问题” 第44.2节,“常见问题” 第44.3节,“春季安全架构问题” 第44.4节,“常见”如何“请求 44.1 General Questions 第44.1.1节,“Spring Security会满足我的所有应用程序安全要求吗?” 第44.1.2节,“为什么不使用web.
阅读全文
摘要:本附录提供了Spring Security中模块的参考,以及它们在运行的应用程序中运行所需的附加依赖关系。我们不包括仅在构建或测试Spring Security本身时使用的依赖关系。我们也不包括外部依赖所需的可传递依赖。 项目网站上列出了所需的Spring版本,因此下面的Spring依赖项省略了具体
阅读全文
摘要:LDAP在它自己的章节中有详细介绍。我们将在这里进一步解释命名空间选项如何映射到Spring beans。LDAP实现广泛使用了Spring LDAP,所以熟悉一下该项目的应用编程接口可能会有所帮助。 41.5.1 Defining the LDAP Server using the使用定义LDAP
阅读全文
摘要:41.4.1 <global-method-security> 这个元素是为Spring Security beans上的安全方法添加支持的主要手段。可以通过使用注释(在接口或类级别定义)或者通过使用AspectJ语法将一组切入点定义为子元素来保护方法。 <global-method-securit
阅读全文
摘要:在Spring Security 3.0之前,身份验证管理器AuthenticationManager 是在内部自动注册的。现在,您必须使用<authentication-manager>元素显式注册一个。这将创建Spring Security的ProviderManager类的一个实例,它需要用一
阅读全文
摘要:Spring Security 4.0+提供了对消息授权的支持。一个有用的具体例子是在基于WebSocket的应用程序中提供授权。 41.2.1 <websocket-message-broker> websocket-message-broker元素有两种不同的模式。如果未指定websocket-
阅读全文
摘要:41.1 Web Application Security网络应用安全 41.1.1 <debug> 启用spring安全调试基础架构。这将提供人类可读的(多行)调试信息来监控进入安全过滤器的请求。这可能包括敏感信息,例如请求参数或头,并且应该只在开发环境中使用。 41.1.2 <http> 如果在
阅读全文
摘要:该框架使用了各种数据库模式,本附录提供了所有这些模式的单一参考点。您只需要为您需要的功能领域提供表格。 DDL语句是为HSQLDB数据库提供的。您可以将这些作为定义您正在使用的数据库模式的指南。 40.1 User Schema 用户详细信息服务UserDetailsService 的标准JDBC实
阅读全文
摘要:Spring Security提供了Spring数据集成,允许在查询中引用当前用户。将用户包括在查询中以支持分页结果不仅有用,而且是必要的,因为之后过滤结果将不会扩展。 38. Spring Data & Spring Security Configuration 要使用这种支持,请提供一个类型为S
阅读全文
摘要:Spring Security提供了许多与Spring MVC的可选集成。本节将更详细地介绍集成。 37.1 @EnableWebMvcSecurity 从Spring Security 4.0开始,不推荐使用@ EnableWebMvcSecurity。替换为@EnableWebSecurity,
阅读全文
摘要:关于与Java并发API和Spring任务抽象的其他集成,请参考Javadoc。一旦你理解了前面的代码,它们就很容易理解了。 Delegating Security Context Callable委托安全上下文可调用Delegating Security Contex tExecutor委托安全上
阅读全文
摘要:在前一节中,我们发现使用delegatingsecuritytycontextrunable很容易,但这并不理想,因为我们必须了解Spring Security才能使用它。让我们看一下DelegatingSecurityContextExecutor如何保护我们的代码免受我们使用的任何Spring
阅读全文
摘要:Spring Security并发支持中最基本的构件之一是delegatingsecuritycontextrunable。它包装一个可运行的委托,以便用为该委托指定的安全上下文SecurityContext 来初始化安全上下文容器SecurityContextHolder 。然后,它调用委托Run
阅读全文
摘要:spring-security-crypt模块的密码包支持对密码进行编码。PasswordEncoder 是中央服务接口,具有以下签名: 1 public interface PasswordEncoder { 2 3 String encode(String rawPassword); 4 5 b
阅读全文
摘要:KeyGenerators类为构造不同类型的密钥生成器提供了许多方便的工厂方法。使用这个类,您可以创建一个字节密钥生成器来生成字节[]密钥。您还可以构造一个StringKeyGenerator来生成字符串键。密钥生成器是线程安全的。 35.3.1 BytesKeyGenerator 使用 KeyGe
阅读全文
摘要:Encryptor类提供了构造对称加密器的工厂方法。使用此类,您可以创建字节密码器来加密原始字节[]形式的数据。您还可以构造文本加密程序来加密文本字符串。加密器是线程安全的。 35.2.1 BytesEncryptor 使用Encryptors.stronger 的工厂方法来构造字节密码器: 1 E
阅读全文
摘要:Spring Security提供了一个运行管理器界面: 1 Authentication buildRunAs(Authentication authentication, Object object, 2 List<ConfigAttribute> config); 3 4 boolean su
阅读全文
摘要:在安全对象回调阶段,抽象安全接口AbstractSecurityInterceptor 能够临时替换安全上下文SecurityContextHolder 和安全上下文SecurityContext 容器中的身份验证对象Authentication 。只有当身份验证管理器AuthenticationM
阅读全文
摘要:在Spring Security项目的samples/certificate目录中有一些预先生成的证书。如果您不想生成自己的,可以使用它们来启用SSL进行测试。。文件server.jks包含服务器证书、私钥和颁发证书的证书颁发机构证书。还有一些来自示例应用程序的用户的客户端证书文件。您可以将这些安装
阅读全文
摘要:启用X.509客户端身份验证非常简单。只需将< x509/>元素添加到您的http安全命名空间配置中。 1 <http> 2 ... 3 <x509 subject-principal-regex="CN=(.*?)," user-service-ref="userService"/>; 4 </h
阅读全文
摘要:X.509证书认证最常见的用途是在使用SSL时验证服务器的身份,最常见的是从浏览器使用HTTPS。浏览器将自动检查由服务器提供的证书是否已经由它维护的可信证书颁发机构列表中的一个颁发(即数字签名)。 您也可以使用带有“相互认证”的SSL然后,作为SSL握手的一部分,服务器将从客户端请求有效的证书。服
阅读全文
摘要:CasAuthenticationProvider区分有状态客户端和无状态客户端。有状态客户端被认为是任何提交到CasAuthenticationFilter的filterProcessUrl 的客户端。无状态客户端是指在一个不是filterProcessUrl的URL上向CasAuthentica
阅读全文
摘要:本节介绍如何使用CAS对服务进行身份验证。换句话说,本节讨论如何设置一个客户端,该客户端使用一个使用CAS进行身份验证的服务。下一节描述如何设置无状态服务来使用CAS进行身份验证。 Configuring CAS to Obtain Proxy Granting Tickets配置证书颁发机构以获取
阅读全文
摘要:CAS协议支持单次注销,可以轻松添加到您的Spring安全配置中。以下是对处理单次注销的Spring安全配置的更新 logout 元素将用户从本地应用程序中注销,但不会终止与CAS服务器或任何其他已登录应用程序的会话。requestSingleLogoutFilter筛选器将允许请求/spring_
阅读全文
摘要:本节介绍如何设置Spring Security来验证服务票证。通常这是一个网络应用程序所需要的。您需要将服务属性bean添加到您的应用程序上下文中。这代表您的CAS服务: 该服务必须等于将由CasAuthenticationFilter监控的网址。sendRenew默认为假,但如果您的应用程序特别敏
阅读全文