基于Springboot搭建java项目(二十四)——权限认证框架SpringSecurity

news2024/10/8 20:29:55

权限认证框架SpringSecurity

一、为什么要做权限认证

在WEB开发的过程当中,安全一直是很重要的一方面。安全和直接的业务是没有直接挂钩的,但是在业务实现的初期如果没有考虑的安全性的化,在后期迭代的时候就会出现很多的问题。例如存在着安全漏洞和构建安全框架的复杂性。为此,在WEB开发的设计阶段我们就需要有一个构建安全框架的意识,并将其运用到整个开发过程当中,只有这样开发出的系统在安全方面才能得到保障。

目前市面上存在比较有名的:Shiro,Spring Security !还有我最近有接触到一款轻量级的JAVA权限认证框架sa-token

今天我们就简单介绍一下SpringSecurity,这里只是抛砖引玉,对SpringSecurity一些简单的知识和简单的搭建做一个介绍,要具体的掌握SpringSecurity单靠一篇文章是远远不够的,需要不断的探索和实践练习。

二、什么是SpringSecurity

我们看下它的官网介绍:Spring Security官网地址

Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications.

Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements

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

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

Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括**用户认证(Authentication)和用户授权(Authorization)**两个部分。

用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。

用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

对于上面提到的两种应用情景,Spring Security 框架都有很好的支持。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。

三、认识SpringSecurity

Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理!

记住几个类:

WebSecurityConfigurerAdapter:自定义Security策略

AuthenticationManagerBuilder:自定义认证策略

@EnableWebSecurity:开启WebSecurity模式

核心过滤器:

UsernamePasswordAuthenticationFilter:负责处理我们在登陆页面填写了用户名密码后的登陆请求。入门案例的认证工作主要有它负责。

ExceptionTranslationFilter: 处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException 。

FilterSecurityInterceptor: 负责权限校验的过滤器。

Spring Security的两个主要目标是 “认证” 和 “授权”(访问控制)。

“认证”(Authentication)

身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。

身份验证通常通过用户名和密码完成,有时与身份验证因素结合使用。

认证流程如下:
在这里插入图片描述

在此,我们要了解以下几个接口:

Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息。

AuthenticationManager接口:定义了认证Authentication的方法

UserDetailsService接口:加载用户特定数据的核心接口。里面定义了一个根据用户名查询用户信息的方法。

UserDetails接口:提供核心用户信息。通过UserDetailsService根据用户名获取处理的用户信息要封装成UserDetails对象返回。然后将这些信息封装到Authentication对象中。

“授权” (Authorization)

授权发生在系统成功验证您的身份后,最终会授予您访问资源(如信息,文件,数据库,资金,位置,几乎任何内容)的完全权限。

这个概念是通用的,而不是只在Spring Security 中存在。

在SpringSecurity中,会使用默认的FilterSecurityInterceptor来进行权限校验。在FilterSecurityInterceptor中会从SecurityContextHolder获取其中的Authentication,然后获取其中的权限信息。当前用户是否拥有访问当前资源所需的权限。

所以我们在项目中只需要把当前登录用户的权限信息也存入Authentication。

然后设置我们的资源所需要的权限即可。

四、SpringSecurity的使用

使用在这篇文章中就不做多的介绍了,提供以下几篇优质的文章供大家学习,后续我也会更新关于SpringSecurity使用的文章。

用户认证:https://blog.csdn.net/qq_33369905/article/details/106647308

狂神的文章,很清晰的从每一步来说明SpringSecurity认证的过程,适合入门。

用户认证(进阶):https://zhuanlan.zhihu.com/p/349962352

这篇文章更多的是从SpringSecurity使用的角度来进行说明的,可以对SpringSecurity的使用有更深的了解

用户认证+授权:https://blog.csdn.net/weixin_43847283/article/details/124075302

这篇文章就很全面的介绍了SpringSecurity的整个链路和用户认证+授权的使用方法,搞懂这篇文章基本上就能使用SpringSecurity了。再加上不断的实践定能掌握SpringSecurity框架。

希望以上文章会对你带来帮助,下篇文章见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.1--贪心--活动安排问题

今天开始,快速过一遍贪心,贪心要比动态规划简单许多,但是,我们也要理解其中的证明过程 贪心算法采用自顶向下,以迭代的方法做出相继的贪心选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题&am…

Maven实战-3.setting.xml标签说明

前言 持续更新中… setting.xml文件 1.<localRepository> 自定义本地Maven仓库目录地址。 这样本地的仓库地址就是配置的目录了。 2.<proxies> 基于安全因素考虑&#xff0c;使用通过安全认证的代理访问因特网&#xff0c;这时候需要为Maven配置HTTP代理&…

TOOM大数据舆情监控系统方案,如何做好舆情大数据监测分析?

大数据舆情监控是指通过对大量数据的收集、分析和处理&#xff0c;了解舆论的发展趋势和活动&#xff0c;并对舆论风险进行预警和评估&#xff0c;以保障企业的舆论安全。TOOM大数据舆情监控系统方案&#xff0c;如何做好舆情大数据监测分析? 一、大数据舆情监控系统方案 1.…

车载以太网 - SomeIP - SomeIP Entry - 04

前面总纲内容有说,车载以太网中的SomeIP内容是非常多的,并且为了实现SOA的相关需求,提供了多种多样的报文类型,因此也就有了今天要说的SomeIP-SD中的重要组成部分之一的条目(Entry)部分,而SomeIP-SD在车载网络中占有相当大的比重,可以当做是一定要实现的,如果这块不实…

C语言知识点复习------排序法(冒泡、选择、插入)与链表

目录 排序 冒泡排序&#xff1a; 选择排序&#xff1a; 插入排序&#xff1a; 链表 单链表的建立 单向循环链表的建立 双向循环链表 排序 冒泡排序&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。它重复地走访过要排序的数列&a…

RK356X系列(RK3568)GL857L芯片 USB驱动开发

首先我们先区分一下USB几种控制器类型协议 OHCI UHCI EHCI xHCI。OHCI、UHCI都是USB1.1的接口标准&#xff0c;而EHCI是对应USB2.0的接口标准&#xff0c;最新的xHCI是USB3.0的接口标准。1. OHCI&#xff08;Open Host Controller Interface&#xff09;是支持USB1.1的标准&…

C++ | 数据结构与算法 | 单源最短路径 | Dijkstra Bellman Ford

文章目录前言Dijkstra算法讲解与实现Bellman Ford算法与实现前言 &#xff08;关于代码实现的图结构&#xff0c;可以看图结构的实现这篇文章&#xff09; Dijkstra的实现与Prim的实现相似&#xff0c;两者都是通过贪心思想实现&#xff0c;它们有什么不同呢&#xff1f;首先…

数字IC设计工程师一般都干什么

数字IC设计工程师一般都干什么 简单来说&#xff0c;数字IC设计工程师一般就是负责写verilog代码&#xff08;当然&#xff0c;不是仅仅写个代码&#xff09;。本文主要对数字IC设计的工作流程进行简单的介绍&#xff0c;也算是对我从业一年来的总结。 一般来说&#xff0c;数…

linux下的僵尸进程处理SIGCHLD信号

阅读目录 对于waitpid的p i d参数的解释与其值有关&#xff1a;wait与waitpid区别&#xff1a; 转自&#xff1a;linux下的僵尸进程处理SIGCHLD信号 - Jessica程序猿 - 博客园 什么是僵尸进程&#xff1f; 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区&am…

Java——字母大小写全排列

题目链接 字母大小写全排列 题目描述 给定一个字符串 s &#xff0c;通过将字符串 s 中的每个字母转变大小写&#xff0c;我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。 题目示例 输入&#xff1a;s “a1b2” 输出&#xff1a…

spring-boot国际化i18n中英文实现

一、背景 接触到的项目&#xff0c;使用国际化越来越多&#xff0c;系统页面实现中英文环境&#xff0c;记录下&#xff0c;前端使用vue vue-i8n 后端java自己封装 前端翻译对象&#xff1a;页面涉及到的所有按钮&#xff08;包括新增、删除、导出、下载、导入、上一页、下…

相控阵天线分析综合、设计与测试

目录概述HFSS特殊曲线天线建模直线阵列天线特性和阵列因子&#xff08;方向图乘积定理、波束扫描&#xff09;非规则直线阵列天线&#xff08;稀布阵列、稀疏阵列、平方率分布阵列&#xff09;直线阵列天线低副瓣综合&#xff08;切比雪夫、泰勒分布、SinZ-Z和Villeneuve分布&a…

2023-java面试最新总结

1. Java中的原始数据类型都有哪些&#xff0c;它们的大小及对应的封装类是什么&#xff1f; boolean boolean数据类型非true即false。这个数据类型表示1 bit&#xff0c;但是它的大小并没有精确定义。 《Java虚拟机规范》中如是说&#xff1a;“虽然定义了boolean这种数据类型…

胡歌官宣生女,胡椒粉们真为他高兴,人生最顶级的能力是【涅槃重生】的力量

今天刷到胡歌官宣生女&#xff0c;胡歌当父亲了&#xff0c;真为他高兴。恭喜老胡&#xff01;&#x1f389;作为十多年胡椒粉&#xff0c;连夜录制了这个视频&#xff08;抖音视频号&#xff1a;【小伍说_523的作品】胡歌官宣生女&#xff0c;十几年的胡椒粉真替他高兴&#x…

Unity二

一、脚本的创建 可以在project视图中的Assets文件夹中右键创建一个C#脚本&#xff0c;可以将脚本分类放在不同的文件夹中&#xff0c;或者点击游戏对象后在Inspector视图中找到最下方的添加组件按钮&#xff0c;然后点击新建脚本即可。若在project视图中创建的脚本&#xff0c…

详解HTTP请求行

请求行格式 request-linemethod SP request targe SP HTTP-version CRLFrequest-target 有四种格式 origin-formabsolute-path&#xff1a;向原服务器&#xff0c;也就是实际响应内容的服务器发起请求的&#xff0c;path为空时&#xff0c;必须传递 /absolute-formabsolute…

应用性能监控对系统慢访问分析案例

背景 某港口综合管控系统是其主要的业务系统&#xff0c;最近发现用户反馈出现访问响应慢的情况。 该港口已部署NetInside流量分析系统&#xff0c;使用流量分析系统提供实时和历史原始流量。本次分析重点针对综合管控业务系统性能进行分析&#xff0c;以供安全取证、性能分析…

C# 国际化问题之CultureInfo(小数点的不同一些欧洲国家习惯使用,而非.)

前言 在公司做的桌面软件在国内以及亚美洲地区都能正常使用&#xff0c;结果到了俄罗斯客户那边软件就根本打不开&#xff0c;不能正常使用。 文章目录定位问题分析问题找解决方案总结定位问题 经定位排查&#xff0c;最终发现是俄罗斯的浮点数不是用小数点&#xff0c;而是用…

网赚 美金 Neobux注册操作完整教程

neobux是点击网赚即时支付&#xff08;Instant pay&#xff09;型的创始网站&#xff0c;同时也是点击网赚类网站中信誉最高、实力最强&#xff0c;会员最多、最稳定的。Neobux官网 https://www.neobux.com/?rxyadmin账户注册1.点击官网地址进入neobux主站&#xff0c;点击右上…

【正点原子FPGA连载】第二十五章设备树下的LED驱动实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十五章设备树…