SpringSecurity学习

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法 阅读详情

1 RBAC

Role-Based Access Control(给予角色的权限控制访问)

2 认证管理


Basic认证:

    一个请求到来时,浏览器弹出对话框,让用户输入用户名和密码,并用base64进行编码,实际是username:password进行base64编码。浏览器会在http报文头部加上base64编码的内容,服务器通过解析出这些信息,并进行认证通过才可以访问。

两个明显缺点:

    1.无状态的,每次都必须带上认证信息

    2.传输安全性不足,用的base64编码,基本上就属于铭文传输

Digest认证:

    主要用来解决Basic认证带来的安全问题,采用了challenge-response的认证模式。当访问特定的资源时,浏览器依旧弹出对话框,让用户输入用户名密码。浏览器会对 用户名、密码、http请求方法、被请求资源的URI等组合后,进行MD5运算,之后把计算得到的摘要信息发送给服务器。服务器web容器获取到http报文头部相关的认证信息后,从中获取username,根据username获取数据库中对应的密码,同样对 用户名、密码、http请求方法、被请求资源的URI等组合进行MD5运算,将运算结果与报文头部中获取的比较,相同则认证通过

     缺点:

        认证的报文被攻击者拦截到,攻击者也可以获取到资源

X.509证书认证:

    包含以下信息,X.509的版本号、证书持有人的公钥、证书的序列号(是由CA给与的)、主体信息、证书有效期、证书认证机构、发布的数字签名、签名的算法等等。已经被广泛应用在对电子邮件进行签名,对程序代码进行认证,以及对其他类型的数据进行认证等等。

LDAP认证:

    轻量级的目录访问协议(Lightweight Directory Access Protocol)

Form认证

3 权限拦截


SecurityContextPersistenceFilter

LogoutFilter

AbstractAuthenticationProcessingFilter

DefaultLoginPageGeneratingFilter

BasicAuthenticationFilter

SecurityContextHolderAwareRequestFilter

RememberMeAuthenticationFilter

AnonymousAuthenticationFilter

ExceptionTranslationFilter

SessionManagementFilter

FilterSecurityInterceptor

FilterChainProxy

4 数据库管理


5 权限缓存

CachingUserDetailsService

EhCacheBasedUserCache

我们不仅会缓存userCache,还会缓存用户权限相关的一些信息。

我们也不仅会使用内存级别的cache和Ehcache,还会使用Redis,Memcache....

6 自定义决策

AbstractAccessDecisionManager

AccessDecisionVoter

RoleVoter

AffirmativeBased 一票通过

ConsensusBased 一半以上资源投票通过

UnanimousBased 全票通过

7 基于SpringBoot的SpringSecurity环境快速搭建与验证

start.spring.io


@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/").permitAll()
                .anyRequest().authenticated()
                .and()
                .logout().permitAll()
                .and()
                .formLogin();
        http.csrf().disable();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/js/**","/css/**","/images/**");
    }
}
@SpringBootApplication // 用来替代@Configuration @EnableAutoConfiguration @ConmponentScan这三个注解
@RestController // 是@Controller和@ResponseBody的合体
@EnableAutoConfiguration  // @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @RequestMapping("/")
    public String home() {
		return "hello spring boot";
    }

    @RequestMapping("/hello")
    public String hello() {
        return "hello world";
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.gzw</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>demo</name>
	<description>Demo project for Spring Security</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

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

		<!--<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>



农作物生长模型:数学建模与实战案例 在本篇博客中,我们介绍了农作物生长模型的基本原理,并结合Matlab代码和实战案例,演示了如何应用数学建模技术进行农作物生长模型的研究与应用。农作物生长模型在农业领域具有重要意义,希望本篇博客能帮助读者更好地理解农作物生长模型的原理和应用,并在实际农业生产中取得更好的效果。 阅读详情

相关推荐

Oracle 11g版本下载及安装超详细教程图解

新手Oracle安装教程

weixin_43738344的博客 9万+

SpringSecurity从入门到精通

0. 简介是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity,Shiro的上手更加的简单。一般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作。

qq_46417076的博客 437

Ubuntu 20.04 LTS下5分钟搞定ONLYOFFICE协作空间社区版(Docker版保姆级教程)

本文提供了一份在Ubuntu 20.04 LTS系统上,通过Docker快速部署ONLYOFFICE协作空间社区版的保姆级教程。内容涵盖从系统准备、Docker环境搭建,到执行自动化安装脚本、完成Web初始化的全流程,并详细说明了部署后的安全配置、数据备份及基本运维要点,帮助用户高效构建私有、安全、可控的团队文档协作平台。

weixin_28826961的博客 260

Spring Boot之SpringSecurity学习

Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,可以实现强大的Web安全控制,对于安全控制,仅需要引入 spring-boot-starter-secu

缘友一世的博客 2510

KV STUDIO的安装与实践(一)

KV STUDIO是一种软件开发工具,用于编写、调试和管理基于Key-Value(键-值)存储的应用程序。KV STUDIO提供了一个集成开发环境(IDE),使开发人员可以方便地创建和管理键-值数据库,并编写逻辑和业务规则来操作和查询这些数据。它支持多种编程语言和平台,并提供了丰富的API和工具来简化开发过程。使用KV STUDIO,开发人员可以快速构建高效、可靠的键-值存储系统,并实现各种应用程序,如缓存、会话管理、配置存储等。本次使用plc进行案例讲解,结合小编的亲身经历,仅供参考!

weixin_47514459的博客 6336

UsualToolCMS-验证码绕过漏洞复现

本文以UsualToolCMS为靶场,复现了验证码绕过漏洞

小小小屿屿屿的博客 918

SpringSecurity安全框架

进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条,抖音等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的过程就是认证。 系统为什么要认证? 认证是为了保护系统的隐私数据与资源,用户的身份合法,方可访问该系统的资源。 认证︰用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法 方可继续访问,不合法则拒绝访问。常见的用户身份认证方式有:

wk3510的博客 810

【OpenBMC 系列】4.启动流程 使用qume模拟ast2600-evb

1.安装openbmc适配的qume 2.启动bmc 3.使用bmc web

AiFool的博客 4458

【SpringBoot学习】04SpringSecurity

SpringBoot(B站尚硅谷)学习笔记 04SpringSecurity

weixin_48074431的博客 768

基于立创EDA的8口全千兆POE交换机设计详解:RTL8370N芯片与90W大功率供电方案

本文详细解析了基于立创EDA设计的8口全千兆POE交换机方案,核心采用RTL8370N交换芯片与支持90W大功率供电的IEEE 802.3bt标准PD芯片。文章深入探讨了PSE/PD供电管理、电源架构设计、电路细节及关键散热方案,为DIY或学习POE交换机硬件设计提供了完整的开源实践指南。

weixin_29050829的博客 1万+

手把手教你用SlowFast训练自定义手势识别数据集(附FFmpeg抽帧技巧)

本文提供了一份基于SlowFast架构训练自定义手势识别数据集的完整实战指南。文章重点剖析了数据准备的核心挑战,详细讲解了利用FFmpeg进行高、低帧率抽帧的技巧,并介绍了构建半自动标注流水线、生成符合SlowFast要求的AVA格式数据集文件的具体方法。最后,针对手势识别场景,给出了关键的模型训练配置与调优建议,帮助开发者高效完成从数据到模型的全流程。

s1t2u3的博客 909

Security 学习系列

Security 学习系列

qq_43654581的博客 843

ADS电路仿真方法综述:原理与应用

在射频与微波电路设计中,精确的仿真技术是验证性能的关键。ADS(Advanced Design System)作为行业标准工具,集成了多种仿真方法,适用于不同场景。本文将系统解析瞬态分析、谐波平衡(HB)、交流分析(AC)、直流分析(DC)、S参数、大信号SP(LSSP)及包络分析的原理、实现机制与应用场景。

u014344410的博客 478

SpringSecurity是什么,如何学习SpringSecurity?

SpringSecurity是什么,如何学习SpringSecurity?

杨荧的优快云博客 1691

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【SpringSecurity】SpringSecurity学习教程

SpringSecurity

后端研发工程师Marion的博客 587

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringSecurity学习笔记

​ 我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity的异常处理机制。​ 在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。

2302_76909185的博客 854

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

学习学习SpringSecurity

学习学习SpringSecurity

qq_41490913的博客 108

学习springsecurity

    学习springsecurity发现的网站,来记录一下 http://code.google.com/p/family168/downloads/list

技术交流 130

学习SpringSecurity

转载的:学习SpringSecurity这一篇就够了_怪咖软妹@的博客-优快云博客

牵羊逛街的狼 177

SpringSecurity入门和架构的学习日志

Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。

2401_87808951的博客 1215

SpringSecurity6 学习

SpringSecurity6介绍,讲解基本的配置过滤链 和 对应的用户配置,流程讲解。

screamn的博客 1594

SpringSecurity-授权学习日志

SpringSecurity提供方便的授权功能,有俩种实现配置方式,同时原理也不复杂

2401_87808951的博客 1683

学习SpringSecurity这一篇就够了

Spring Security 是 Spring 家族中的成员。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。

怪咖@的博客 7968

springsecurity 6.0学习

小伙伴们,你们好呀!我是老寇! 曾几何时,我想一直用jdk8开发项目,不料,随着spring版本的迭代,jdk8也成为了过去,因此,有必要学习新的技术,然而,学习新的技术必然离不了官网文档,所以,老寇决定开个新坑,用来记录新版本的springsecurity与微服务的整合

. 1万+

SpringSecurity学习总结

SpringSecurti基于Spring框架,提供了一套Web应用安全性的完整解决方案,一般来说,Web应用的安全性包括用户认证(Authenticataion)和用户授权(Authorization)两个部分,这两点也是Spring Security重要核心功能

精神小伙的博客 948
上一篇: java程序员必看书籍
下一篇: Spring Security 无法登陆,报错:There is no PasswordEncoder mapped for the id “null”
心灵泽尘
博客等级 码龄10年 32粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值