一篇文章带你认识 SpringSecurity

一、SpringSecurity 介绍

Java 领域老牌的权限管理框架当属 Shiro 了。

Shiro 有着众多的优点,例如轻量、简单、易于集成等。

当然 Shiro 也有不足,例如对 OAuth2 支持不够,在 Spring Boot 面前无法充分展示自己的优势等等,特别是随着现在 Spring Boot 和 Spring Cloud 的流行,Spring Security 正在走向舞台舞台中央。

Spring Security 最早不叫 Spring Security ,叫 Acegi Security,叫 Acegi Security 并不是说它和 Spring 就没有关系了,它依然是为 Spring 框架提供安全支持的。事实上,Java 领域的框架,很少有框架能够脱离 Spring 框架独立存在。

Acegi Security 基于 Spring,可以帮助我们为项目建立丰富的角色与权限管理,但是最广为人诟病的则是它臃肿繁琐的配置,这一问题最终也遗传给了 Spring Security。

在 Acegi Security 时代,网上流传一句话:“每当有人要使用 Acegi Security,就会有一个精灵死去。”足见 Acegi Security 的配置是多么可怕。

当 Acegi Security 投入 Spring 怀抱之后,先把这个名字改了,这就是大家所见到的 Spring Security 了,然后配置也得到了极大的简化。

但是和 Shiro 相比,人们对 Spring Security 的评价依然中重量级、配置繁琐。

直到有一天 Spring Boot 像谜一般出现在江湖边缘,彻底颠覆了 JavaEE 的世界。一人得道鸡犬升天,Spring Security 也因此飞上枝头变凤凰。

到现在,要不要学习 Spring Security 已经不是问题了,无论是 Spring Boot 还是 Spring Cloud,你都有足够多的机会接触到 Spring Security。

二、核心功能

对于一个权限管理框架而言,无论是 Shiro 还是 Spring Security,最最核心的功能,无非就是两方面:

认证
授权

通俗点说,认证就是我们常说的登录,授权就是权限鉴别,看看请求是否具备相应的权限。

虽然就是一个简简单单的登录,可是也能玩出很多花样来。

Spring Security 支持多种不同的认证方式,这些认证方式有的是 Spring Security 自己提供的认证功能,有的是第三方标准组织制订的,主要有如下一些:

一些比较常见的认证方式:

HTTP BASIC authentication headers:基于IETF RFC 标准。
HTTP Digest authentication headers:基于IETF RFC 标准。
HTTP X.509 client certificate exchange:基于IETF RFC 标准。
LDAP:跨平台身份验证。
Form-based authentication:基于表单的身份验证。
Run-as authentication:用户用户临时以某一个身份登录。
OpenID authentication:去中心化认证。

除了这些常见的认证方式之外,一些比较冷门的认证方式,Spring Security 也提供了支持。

Jasig Central Authentication Service:单点登录。
Automatic “remember-me” authentication:记住我登录(允许一些非敏感操作)。
Anonymous authentication:匿名登录。
。。。。。。

作为一个开放的平台,Spring Security 提供的认证机制不仅仅是上面这些。如果上面这些认证机制依然无法满足你的需求,我们也可以自己定制认证逻辑。当我们需要和一些“老破旧”的系统进行集成时,自定义认证逻辑就显得非常重要了。

除了认证,剩下的就是授权了。

Spring Security 支持基于 URL 的请求授权、支持方法访问授权以及对象访问授权。

三、SpringSecurity 作用

安全这一块从来都有说不完的话题,一个简单的注册登录很好做,但是你要是考虑到各种各样的攻击,XSS、CSRF 等等,一个简单的注册登录也能做的很复杂。

幸运的是,即使你对各种攻击不太熟悉,只要你用了 Spring Security,就能自动避免掉很多攻击了,因为 Spring Security 已经自动帮我们完成很多防护了。

从这个角度讲,我们学习 Spring Security,不仅仅是学习 Spring Security 的各种用法,也是去了解去熟悉各种网络攻击。

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/108808330