最近公司项目安全模块中的的权限认证相关需要重构。老版本的权限认证逻辑都与业务逻辑混在一起,用户进行每一个功能项都需要判断是否有该操作的权限;而且判断分布在每一个功能代码中,难以维护;因此终于有某个大佬看他不爽决定重构,但是谁来搞定呢,抽签被选中!
为此我查了一下相关资料,看了一些案例,决定采用Spring Security+AOP来进行权限认证,实现安全模块与业务模块的分离。
在此之前对Spring Security有一定的了解,但是在各个方面还需要重新回顾一下,以便能在重构过程中细节方面处理更好,避免维护时麻烦;
在回顾的同时准备写博文记录一下,一方面增加理解,另一方面方便以后查阅;
目前此博文打算根据自己的项目需求,从Spring Security入门到深入来作为一个系列来写,希望自己在紧张的工作之余能够坚持将此系列更新到最后!
加油!加油!加油!!!!!

  • 此系列开发环境
  • 操作系统:Win10
  • JDK1.8
  • 开发工具 Spring Tool Suite 4 4.5.1.RELEASE (默认)或者 eclips 4.7.3
  • Spring Boot 2.3.3.RELEASE
  • Spring Framework 5.2.8.RELEASE
  • Spring Security 2.3.3.RELEASE


Spring Security 系列一 初识

  • Spring Security 总览
  • Spring Security特征
  • 一、创建Spring Security项目demo
  • 1.通过eclips创建Spring Security项目
  • 2.创建一个简单的示例
  • 总结



Spring Security 总览

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。
Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求

Spring Security特征

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

提示:以下是本篇文章正文内容,下面案例可供参考

一、创建Spring Security项目demo

这是第一篇博文,所以目前规划是按照程序员熟悉一门技术的老规矩,首先创建一个简单的Spring Security项目,完整的“撸”一遍创建项目的流程和一个Hello World示例。然后我会在让后系列中慢慢的向里面充实内容

1.通过eclips创建Spring Security项目

  • 按下图填写相关信息直接下一步下一步即可完成项目创建

spring security 6 集成 saml_spring boot


spring security 6 集成 saml_spring boot_02

spring security 6 集成 saml_spring boot_03

  • 项目目录结构

spring security 6 集成 saml_java_04

  • pom.xml文件中引入的相关依赖

spring security 6 集成 saml_spring_05

<dependency >
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-security</artifactId>
 </dependency>

2.创建一个简单的示例

通过web来测试效果,pom.xml中还需要引入Spring boot web依赖

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
@RestController
public class SpringSecurityController {

	@GetMapping("/hello")
	public String hello() {
		return "Hello, Spring Security!";
	} 
}

选中SpringSecurityApplication运行,浏览器中输入http://localhost:8080/ 将出现如下一个表单登录页面;

spring security 6 集成 saml_java_06


默认使用用户名为user,密码则是动态生成并打印到控制台中;

spring security 6 集成 saml_用户名_07

用户名和密码是可以配置的,这里我们只是最简单的在application.properties文件中进行配置,我们会随着项目的深入,使用项目实际的一般配置;

spring security 6 集成 saml_用户名_08

spring.security.user.name=admin
 spring.security.user.password=123456

重启项目即可用以上用户名密码登录了

总结

以上spring boot项目只需要引入Spring-Securit依赖,一个controller即可完成最简单的一个Spring-Securit demo;spring boot 默认Spring Security配置的登录方式是http基本认证,即用户名密码在弹出框中完成。这种方式安全性差,灵活性不足,所以生产上没有人会用这种方式。通常我们真正项目上使用表单认证方式,下一篇我们实现使用表单认证;