SpringSecurity6从入门到实战之引言和基本概念
前言
在当今数字化时代,随着网络应用的日益普及,保护用户数据和系统安全变得至关重要。作为Java开发社区的中坚力量,Spring框架提供了一整套解决方案来构建企业级应用程序。然而,随着应用程序的复杂性增加,确保应用程序的安全性也成为开发过程中的一个主要挑战。正是在这种背景下,Spring Security应运而生,它不仅为开发者提供了一个全面的安全解决方案,而且通过其模块化和可扩展的设计,使得开发者能够轻松地将其集成到现有的Spring应用程序中。
什么是SpringSecurity
Spring Security是一个功能强大且高度可定制的Java安全框架,它用于保护基于Spring的应用程序。它重点提供了认证(Authentication)和授权(Authorization),并且可以通过插件的方式轻松扩展以满足安全需求。Spring Security不仅支持多种认证方式,如表单登录、HTTP基本认证、OAuth2等,还提供了对Web应用程序的保护,包括CSRF防护、会话管理、密码加密等。
官网:[https://spring.io/projects/spring-security]
以上来自官网下的定义
总的来说,SpringSecurity是Spring全家桶中的一个功能强大,可进行
身份验证(认证)
和访问控制(授权)
的框架,主要实现系统中的权限管理
什么是权限管理
权限管理包括 用户认证
和用户授权
两部分,简称认证授权。
一般来说,Web应用的安全性包括 用户认证
和用户授权
两个部分,这两点也是SpringSecurity的主要核心内容。
- 用户认证Authentication
用户认证,就是验证一个用户是否是合法身份,能否访问该系统的过程。最简单的用户认证方式就是 要求用户输入的用户名和密码,系统通过用户名和密码 来校验用户身份是否合法。常见的认证方式还有 基于生物学特征的身份验证,需要录入指纹、人脸识别等;还有要求通过硬件Key等刷卡的系统,需要刷卡。 - 用户授权Authorization
用户授权,就是控制一个合法用户有权限执行哪些操作,也就是访问控制,控制谁能访问哪些资源。用户在身份认证后,需要分配权限方可访问系统的资源,对于没有权限的资源 用户是不能访问的。如,购物网站 买家登录系统能查询、加购物车、下订单,卖家登录后可以添加商品、修改价格、发货,卖家能做的操作买家是不能操作的,这就是不同的人有不同的权限,做不同的事情。
简单来说:
- 用户认证,就是检查用户能否进入系统。
- 用户授权,就是用户进入系统后 能操作哪些功能。
安全框架的对比
在 Java EE 企业级开发中,安全管理框架目前比较常见的有:
- Shiro
- 优点:轻量级的安全管理框架(Apache提供)、简单(把复杂的事情变简单)、易于集成、也可以在JavaSE环境中使用等。
- 缺点:在微服务时代,Shiro 就显得力不从心了,在微服务面前和扩展方面,无法充分展示自己的优势。
- Spring Security
- 优点:作为 Spring 家族中的一员,和 Spring 等技术可以实现无缝整合。同时对 OAuth2 有着良好的支持,再加上Spring Cloud对 Spring Security 的不断加持(推出 Spring Cloud Security ),让 Spring Securiy 不知不觉中成为微服务项目的首选安全管理方案。
- 缺点:重量级
- Sa-Token
- 轻量级的Java权限认证框架,主要解决登录认证、权限认证、OAuth2.0、分布式Session会话、微服务网关鉴权等一系列权限相关问题。Sa-Token使用简单,功能强大,只需一行代码就可以完成会话登录或校验登录状态。Sa-Token更适合于前后台分离架构,支持多种模式和场景的token生成和验证。
- Sa-Token是一个相对较新的框架,但已经获得了不少关注和好评。
- 开发者自定义
- 即程序员开发实现权限管理,基于角色的访问控制(Role-Based Access Control 简称 RBAC)。但是一个系统的安全,不仅仅是登录和权限控制这么简单,我们还要考虑种各样可能存在的网络攻击以及防御策略,从这个角度来说,开发者自己实现安全管理也并非是一件容易的事情,只有大公司才有足够的人力物力去支持这件事情。