安全上

我刚刚宣布了新消息学习春天安全课程,包括Spring Security 5中新的OAuth2堆栈的完整材料:

>>查看课程

1.概述

在本文中,我们将解释如何设置春天安全与maven并回顾使用Spring安全依赖项的特定用例。您可以找到最新的Spring安全版本在Maven Central.

这是上一篇文章的续篇春天用maven文章,因此对于非安全春季依赖项,这是一个开始的地方。

2.与maven的春天安全

2.1。spring-security-core

Spring的核心安全支持spring-security-core—包含认证和访问控制功能。所有使用Spring Security的项目都必须包含这个依赖项。

此外,spring-security-core支持独立(非web)应用程序,方法级安全性和JDBC:

<属性> < spring-security.version > 5.3.4.RELEASE < / spring security。版本> < spring.version > 5.2.8.RELEASE < /春天。版本>   安全< / groupId > < artifactId > spring-security-core < / artifactId > <版本> $ {spring security。版本}< /版本> < / >的依赖

注意春天和春天安全性在不同的释放时间表上,因此版本号之间没有总是1:1匹配。

如果您使用的是Spring的旧版本——同样重要的是要理解这样一个事实,Spring Security 4.1.x不依赖于Spring 4.1.x版本!例如,何时春天安全4.1.0发布时,Spring核心框架已经是4.2版本了。x,因此包含该版本作为其编译依赖。我们的计划是在未来的版本中将这些依赖关系更紧密地结合起来——参见这个jira有关更多细节 - 但暂时,这具有实际的含义,我们将关注下一个。
2.2。spring-security-web

添加对Spring安全性的Web支持,我们需要spring-security-web依赖:

<依赖> < groupId > org.springframework。安全< / groupId > < artifactId > spring-security-web < / artifactId > <版本> $ {spring security。版本}< /版本> < / >的依赖

这包含过滤器和相关的Web安全基础架构,可在Servlet环境中启用URL访问控制。

2.3。春季安全和旧春季核心依赖关系问题

这个新的依赖性也显示出来了maven依赖图的问题。如上所述,弹簧安全罐不依赖于最新的春季核心罐(但在以前的版本上)。这可能会导致这些年长的依赖关系在上面的过程路径上,而不是较新的5.x春天工件。

要理解为什么会发生这种情况,我们需要看看它是如何发生的Maven解决冲突。如果是版本冲突,Maven将选择最接近树根的jar。例如,spring核心由两者定义spring-orm(5.0.0。释放版本)还要spring-security-core(随着5.0.2.RELEASE版本)。在这两种情况下,Spring-JDBC.在我们项目的根pom的深度为1处定义。正因为如此,它实际上会影响顺序spring-ormspring-security-core在我们自己的POM中定义。第一个将优先考虑在我们的类路径中,我们最终可能使用其中的任何一个版本

为了解决这个问题,我们必须显式定义一些弹簧依赖性在我们自己的pom中,而不依赖于隐式的Maven依赖解析机制。这样做将把这个特定的依赖关系置于pom的深度0(正如它在pom本身中定义的那样),因此它将具有优先级。下面的所有这些都属于同一个类别,都需要明确定义,或者直接定义,或者对于多模块项目,在dependencyManagement元素的父元素:

<依赖> < groupId > org。springframework spring-core ${spring-version}   org. spring-core ${spring-version}   org. spring-core ${spring-version}springframework spring-context ${spring-version}   org。springframework spring-jdbc ${spring-version}   org. spring-jdbc ${spring-version}springframework spring beans ${spring-version}   org。spring-aop ${spring-version}   org. spring-aop ${spring-version}   org. spring-aop ${spring-version}springframework spring-tx ${spring-version}   org. spring-tx ${spring-version}   org. spring-tx ${spring-version}springframework spring-expression ${spring-version}   org. spring-expression ${spring-version}   org. spring-expression ${spring-version}springframework spring-web ${spring-version} 

2.4。spring-security-config和别的

要使用富Spring安全XML名称空间和注释,我们需要spring-security-config依赖:

<依赖> < groupId > org.springframework。安全< / groupId > < artifactId > spring-security-config < / artifactId > <版本> $ {spring security。版本}< /版本> < / >的依赖

最后,LDAP、ACL、CAS、OAuth和OpenID支持在Spring Security中有它们自己的依赖关系:spring-security-ldap,spring-security-acl,spring-security-cas, spring-security-oauthspring-security-openid

2.5。spring-boot-starter-security

当使用弹簧靴时spring-boot-starter-securitystarter将自动包含所有依赖项,例如spring-security-core,spring-security-webspring-security-config其中:

<依赖>  org.springframework.boot   Spring-Boot-Starter-Security   2.3.3.Release  

由于Spring Boot将为我们自动管理所有依赖项,这也将摆脱先前提到的Spring Security和旧的核心依赖关系。

3.使用快照和里程碑

春天安全里程碑以及Spring提供的自定义Maven存储库中可用的快照。有关如何配置这些的其他详细信息,请参阅金宝搏官网188be如何使用快照和里程碑

4.结论

在这个快速教程中,我们讨论了使用的实际细节春天安全与maven。这里呈现的Maven依赖项当然是一些主要的,还有其他几个可能值得一提的其他人尚未制作剪切。尽管如此,这应该是在支持Maven项目中使用春天的良好起点。

安全底部

我刚刚宣布了新消息学习春天安全课程,包括Spring Security 5中新的OAuth2堆栈的完整材料:

>>查看课程
评论在本文上关闭!