今天说说springsecurity中的一个经典认证模式,HttpBasic,在5.x版本之前作为SpringSecurity的默认认证模式,但是在5.x版本中被抛弃了。X。最重要的是表单登录认证模式的应用场景HttpBasic模式HttpBasic登录验证模式是SpringSecurity实现登录验证最简单的方式,也可以说是最简单的方式。为什么它是最卑微的?这种模式可以用来忽悠普通用户,但是稍微懂点技术的用户分分钟就能破解,因为底层没有做任何安全设置,只是简单地将用户名:密码进行base64加密传输为服务器,base64是一种可逆算法。因此,HttpBasic的应用场景非常少。对于不重要的数据,用户较少但你想设置障碍。你可以考虑使用这个集成的SpringSecurity。虽然这种认证方式不是很重要,但还是需要了解一下,这对后面的学习很重要,我们建个工程来演示1.添加maven依赖,直接添加SpringSecurity依赖,如下:org.springframework.bootspring-boot-starter-security2.在SpringSecurity中添加配置由于Chen使用的是SpringBoot2.x版本,所以此时的SpringSecurity是5.x版本,默认的认证方式是form表单authentication,所以需要配置HttpBasic认证方式,代码如下:/***@author公众号:码猿技术专栏*@url:www.java-family.cn*@descriptionSpringSecurity配置类*/@ConfigurationpublicclassSecurityConfigextendsWebSecurityConfigurerAdapter{@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{http.httpBasic()//启用httpbasicauthentication.and().authorizeRequests().anyRequest().authenticated();//所有请求都需要登录Authentica启动项目需要访问}},在项目后台会有这样一系列的日志打印,默认密码在冒号后面。使用生成的安全密码:00af0f93-7103-4c8a-87a4-23a050a4285c我们可以通过浏览器登录验证,默认用户名为user。(下面这个登录框不是我们自己开发的,是用HttpBasic方式搭建的)当然我们也可以通过application.yml来指定和配置用户名和密码,配置如下:spring:security:user:name:adminpassword:adminHttpBasic的原理整个过程如下:首先,HttpBasic模式要求对传输的用户名和密码进行Base64模式加密。如果用户名为admin,密码为admin,则字符串admin:admin使用Base64编码算法进行加密。加密后的结果可能是:YWtaW46YWRtaW4=。然后在Http请求中使用Authorization作为Header,BasicYWtaW46YWRtaW4=作为Header的值,发送给服务器。(注意这里使用的是Basic+空格+加密字符串)当服务器收到这样的请求时,会到达BasicAuthenticationFilter过滤器,提取“Authorization”的header值,并使用与验证用户身份相同的Base64算法对其进行解码.解码结果与用户名密码匹配,用于登录验证。如果匹配成功,您可以继续过滤后续访问。因此,HttpBasic模式确实是一种非常简单粗暴的认证模式。Base64加密算法是可逆的。如果你知道以上原理,分分钟就能破解。我们可以使用PostMan工具发送Http请求进行登录验证。整个过程都在BasicAuthenticationFilter#doFilterInternal()方法中,感兴趣的可以去看看。