Spring Security 学习专栏(一)

因为在工作中遇到了使用SpringSecurity作为安全控制的框架,所以这里打算写一些内容来记录下自己学习过程中了解的情况。
 

搜索Spring Security,进到官网。看到有下面这些版本,下面我们选择5.0.7的GA版本的Reference Doc开始学习

第一章

引言,没细看。直接到第二章。

第二章

2.1 什么是Spring Security?

What?Spring Security为基于Java ee的企业软件应用程序提供全面的安全服务。

Why?就是说Java EE的 Servlet 规范 和 EJB 规范缺少企业应用所需要的深度,并且在WAR级别和EAR 的level上是不可携带的(这一段理解的好拗口 ,ear包还没有见过,war和jar比较常见)Java的JAR包, EAR包 ,WAR包中区别

Do What?如果您切换服务器环境,在新的目标环境中重新配置应用程序的安全性通常需要大量工作。使用Spring Security克服了这些问题,还为您带来了许多其他有用的、可定制的安全特性。

==========================分割线==================================

下面提到了authentication(认证)和authorization(授权)(access-control),这两个在Security中很重要的概念:

  • Authentication:Authentication是建立principal(主体) 的过程,这个principal一般指可以指一个用户,设备或者其他应用程序
  • Authorization:Authorization 决定了principal是否被允许在应用程序中执行某个操作的过程。

个人理解认证决定了“你是谁”,授权决定了“你能做什么”。这两个概念是通用的,不仅仅针对SpringSecurity框架。

====================

然后下面就列举了一大部分Spring Security 支持authentication 的技术。(这里就不列举了)

由于身份认证的灵活性,可以把Spring Security和客户需要的结果绑定在一起,而且如果不用上面列到的技术的话,Spring Security 也支持你编写自定义的身份验证机制。

无论身份认证的机制是怎么样的,Spring Security 也提供了大量的授权功能。主要分为三个方面:

  • web 请求的授权
  • 方法是否可以被调用的授权
  • 对单个domain对象实例访问的授权

(前面两个比较好理解,第三点是不是指对一个对象内容访问的权限?先往下看吧)

2.2 Spring Security的历史

2.3 版本编号规则

2.4 获取Spring Security

2.4.1 maven 方式获得

一个最小的SpringSecurity项目要往pom依赖添加下面两个内容

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

相关maven仓库的说明:

所有的GA版本(即以. release结尾的版本)都部署到Maven Central,因此不需要在pom中声明额外的Maven存储库。如果您使用的是snapshot(快照)版本,那么您需要确保Spring快照存储库的定义如下:

<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
	<id>spring-snapshot</id>
	<name>Spring Snapshot Repository</name>
	<url>http://repo.spring.io/snapshot</url>
</repository>
</repositories>

使用的是release版本,则要配置成

<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
	<id>spring-milestone</id>
	<name>Spring Milestone Repository</name>
	<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>

(默默吐槽下,spring.io的仓库貌似很慢。还是找下其他的吧)

Spring Security是构建与Spring Framework  5.0.8.RELEASE 版本上的,但是应该和Spring Framework 4.0.x版本集成工作。许多用户都会遇到Spring Security的传递依赖关系会引发奇怪的classpath问题,使Spring Framework 5.0.8发生问题。

解决这个问题的一种方法是在pom的部分中包含所有的Spring框架模块。

另一种方法是在pom的部分中包含spring-frameworkbom。xml,如下所示:

<dependencyManagement>
	<dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-framework-bom</artifactId>
		<version>5.0.8.RELEASE</version>
		<type>pom</type>
		<scope>import</scope>
	</dependency>
	</dependencies>
</dependencyManagement>

这将确保Spring安全性的所有传递依赖项都使用Spring 5.0.8的modules。

2.4.2 Gradle 

2.4.3 项目模块(Project Modules)

这一块主要讲了jar包的构成(暂且跳过吧)

2.4.4 查看源代码

可以通过下面git地址去获取源代码

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

3.1 Spring Security 5.0的新特性

WebFlux响应式编程(Spring5.0特性)没听说过,搜索下mark篇文章有时间再看Spring WebFlux 快速上手​​​​​​​​​​​​​​

猜你喜欢

转载自blog.csdn.net/qq_16979575/article/details/82287400