Spring 下 SpringSecurity5 的食用手册

吐槽

SpringBoot 折腾项目整合 OAuth2 ,网上 SpringSecurity5 的教程还是较少,官方又全英文,居然还不是打开即用的,所以记录一下个人对其从头到脚的食用手册。

重点在这

实用篇:

附加篇:

说明

按官网的话说,弃用 spring-security-oauth,拥抱 spring-security。

大概历程实在懒得整理,参考 csdn上的这篇文章

官方文档

spring-security-oauth 仓库 README 的弃用通知

spring-security 的功能特性

版本

SpringBoot 2.4.3

1
2
3
4
5
6
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3-SNAPSHOT</version>
<relativePath/>
</parent>

Spring Security 5.4.5( 项目中是跟着 Springboot 对应版本的,这里说版本其实不太重要,只是作为当前写这个系列时记录下当前最新的版本号 )

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

核心功能

Spring Security 作为一款权限管理框架,所谓的核心功能无非就是俩点。

  • 认证( 也就是登陆认证呗,校验各种杂七杂八的 )
  • 授权( 简单的说就是授予权限,决定啥人能干啥事 )

认证

Spring Security 支持多种不同的认证方式,这些认证的方法有的是 Spring Security 自己提供的,也有些是第三方组织制定的,一些常用的举例如下:

  • HTTP BASIC authentication headers
  • HTTP Digest authentication headers
  • HTTP X.509 client certificate exchange
  • LDAP( 跨平台身份验证 )
  • Form-based authentication
  • Run-as authentication( 临时用某身份登陆 )
  • OpenID authentication( 去中心化认证 )

以及:

  • Jasig Central Authentication Service( 单点登录 )
  • Automatic “remember-me” authentication( 记住我,eg. Github )
  • Anonymous authentication( 匿名,eg. csdn )

以及 自定义的认证逻辑。

授权

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