SpringSecurity6从入门到实战之引言和基本概念

2024-05-28 10:12

本文主要是介绍SpringSecurity6从入门到实战之引言和基本概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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]

image.png

以上来自官网下的定义

总的来说,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)。但是一个系统的安全,不仅仅是登录和权限控制这么简单,我们还要考虑种各样可能存在的网络攻击以及防御策略,从这个角度来说,开发者自己实现安全管理也并非是一件容易的事情,只有大公司才有足够的人力物力去支持这件事情。

这篇关于SpringSecurity6从入门到实战之引言和基本概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010276

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al