SpringSecurity系列(一) 初识 Spring Security

简介: SpringSecurity系列(一) 初识 Spring Security

1. 写在前面

Java 领域老牌的权限管理框架当属 Shiro 了,Shiro 有着众多的优点,例如:轻量、简单、易于集成等。当然 Shiro 也有不足,例如对 OAuth2 支持不够,在 Spring Boot 面前无法充分展示自己的优势等等。

自从 Spring Boot、Spring Cloud 火起来之后,Spring Security 正在走向舞台的中央。

其实我一直觉得 Spring Security 是一个比 Shiro 优秀很多的权限管理框架,但是重量级、配置繁琐、门槛高这些问题一直困扰着 Spring Security 的开发者,也让很多初学者望而却步。直到 Spring Boot 横空出世,这些问题统统都得到缓解。

在 Spring Boot 或者 Spring Cloud 中,如果想选择一个权限管理框架,几乎毫无疑问的选择 Spring Security,Shiro 在这个环境下已经不具备优势了。

2. Spring Security 概述

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的事实上的标准。

Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。像所有Spring项目一样,Spring Security的真正强大之处在于它可以轻松扩展以满足定制需求的能力。

特征:

  • 对身份验证和授权的全面且可扩展的支持
  • 保护免受会话固定,点击劫持,跨站点请求伪造等攻击
  • Servlet API集成
  • 与Spring Web MVC的可选集成
  • Much more…

3. 核心功能

对于一个安全框架而言,无论是 shiro 还是 Spring Security 最最核心功能无非就两方面:

  • 认证 (你是谁)
  • 授权 (你能干什么)

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

3.1 认证

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

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 提供的认证机制不仅仅是上面这些。如果上面这些认证机制依然无法满足你的需求,我们也可以自己定制认证逻辑。当我们需要和一些“老破旧”的系统进行集成时,自定义认证逻辑就显得非常重要了。

3.2 授权

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

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

4. 怎么学

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

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

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

为了大家不仅能学会Spring Security,还能让大家可以确切的感受到 Spring Security 的魅力,我这里将基于Spring Boot + Vue.js 来进行后续的文章。

技术交流可加VX:JavaBoy_1024

相关文章
|
7天前
|
安全 Java 数据安全/隐私保护
|
11天前
|
安全 Java API
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)
33 0
第7章 Spring Security 的 REST API 与微服务安全(2024 最新版)(上)
|
2月前
|
存储 安全 Java
Spring Boot整合Spring Security--学习笔记
Spring Boot整合Spring Security--学习笔记
55 1
|
22天前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权
|
11天前
|
存储 安全 Java
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)(下)
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)
20 2
|
11天前
|
安全 Cloud Native Java
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)(上)
第10章 Spring Security 的未来趋势与高级话题(2024 最新版)
24 2
|
11天前
|
安全 Java API
第5章 Spring Security 的高级认证技术(2024 最新版)(上)
第5章 Spring Security 的高级认证技术(2024 最新版)
38 0
|
11天前
|
存储 安全 Java
第3章 Spring Security 的用户认证机制(2024 最新版)(下)
第3章 Spring Security 的用户认证机制(2024 最新版)
33 0
|
11天前
|
安全 Java 数据库
第3章 Spring Security 的用户认证机制(2024 最新版)(上)
第3章 Spring Security 的用户认证机制(2024 最新版)
30 0
|
11天前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
18 0