详解Spring Security中的HttpBasic登录验证模式

作者:字母哥博客 时间:2023-12-03 03:58:14 

一、HttpBasic模式的应用场景

HttpBasic登录验证模式是Spring Security实现登录验证最简单的一种方式,也可以说是最简陋的一种方式。它的目的并不是保障登录验证的绝对安全,而是提供一种“防君子不防小人”的登录验证。

就好像是我小时候写日记,都买一个带小锁头的日记本,实际上这个小锁头有什么用呢?如果真正想看的人用一根钉子都能撬开。它的作用就是:某天你的父母想偷看你的日记,拿出来一看还带把锁,那就算了吧,怪麻烦的。

举一个我使用HttpBasic模式的进行登录验证的例子:我曾经在一个公司担任部门经理期间,开发了一套用于统计效率、分享知识、生成代码、导出报表的Http接口。纯粹是为了工作中提高效率,同时我又有一点点小私心,毕竟各部之间是有竞争的,所以我给这套接口加上了HttpBasic验证。公司里随便一个技术人员,最多只要给上一两个小时,就可以把这个验证破解了。说白了,这个工具的数据不那么重要,加一道锁的目的就是不让它成为公开数据。如果有心人破解了,真想看看这里面的数据,其实也无妨。这就是HttpBasic模式的典型应用场景。

二、spring boot2.0整合Spring security

spring boot 2,x版本maven方式引入Spring security坐标。


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

三、HttpBasic登录认证模式

如果使用的Spring Boot版本为1.X版本,依赖的Security 4.X版本,那么就无需任何配置,启动项目访问则会弹出默认的httpbasic认证.

我们现在使用的是spring boot2.0版本(依赖Security 5.X版本),HttpBasic不再是默认的验证模式,在spring security 5.x默认的验证模式已经是表单模式。所以我们要使用Basic模式,需要自己调整一下。并且security.basic.enabled已经过时了,所以我们需要自己去编码实现。


@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
 protected void configure(HttpSecurity http) throws Exception {
  http.httpBasic()//开启httpbasic认证
  .and()
  .authorizeRequests()
  .anyRequest()
  .authenticated();//所有请求都需要登录认证才能访问
 }
}

启动项目,在项目后台有这样的一串日志打印,冒号后面的就是默认密码。


Using generated security password: 0cc59a43-c2e7-4c21-a38c-0df8d1a6d624


我们可以通过浏览器进行登录验证,默认的用户名是user.(下面的登录框不是我们开发的,是HttpBasic模式自带的)


详解Spring Security中的HttpBasic登录验证模式


当然我们也可以通过application.yml指定配置用户名密码




spring:
 security:
  user:
   name: admin
   password: admin

四、HttpBasic模式的原理说明

详解Spring Security中的HttpBasic登录验证模式

  • 首先,HttpBasic模式要求传输的用户名密码使用Base64模式进行加密。如果用户名是 "admin"  ,密码是“ admin”,则将字符串"admin:admin" 使用Base64编码算法加密。加密结果可能是:YWtaW46YWRtaW4=。

  • 然后,在Http请求中使用Authorization作为一个Header,“Basic YWtaW46YWRtaW4=“作为Header的值,发送给服务端。(注意这里使用Basic+空格+加密串)

  • 服务器在收到这样的请求时,到达BasicAuthenticationFilter过滤器,将提取“ Authorization”的Header值,并使用用于验证用户身份的相同算法Base64进行解码。

  • 解码结果与登录验证的用户名密码匹配,匹配成功则可以继续过滤器后续的访问。

所以,HttpBasic模式真的是非常简单又简陋的验证模式,Base64的加密算法是可逆的,你知道上面的原理,分分钟就破解掉。我们完全可以使用PostMan工具,发送Http请求进行登录验证。

详解Spring Security中的HttpBasic登录验证模式

总结

以上所述是小编给大家介绍的Spring Security中的HttpBasic登录验证模式网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://segmentfault.com/a/1190000021006364

标签:Spring,Security,HttpBasic,登录验证
0
投稿

猜你喜欢

  • Kotlin select使用方法介绍

    2022-05-28 19:34:27
  • Java Arrays.asList使用方法解析

    2023-11-26 06:27:09
  • Java BigDecimal使用方法详解

    2022-03-28 03:45:23
  • Java RateLimiter的限流详解

    2023-01-06 17:14:12
  • C# WinForm制作异形窗体与控件的方法

    2023-11-07 11:09:28
  • android在异步任务中关闭Cursor的代码方法

    2022-04-21 18:07:32
  • 如何基于SpringBoot部署外部Tomcat过程解析

    2021-10-26 07:14:16
  • maven引入本地jar包运行报错java.lang.NoClassDefFoundError解决

    2022-10-15 01:42:24
  • Android实现基于滑动的SQLite数据分页加载技术(附demo源码下载)

    2022-04-21 03:42:02
  • 一文了解Java中record和lombok的使用对比

    2022-08-02 06:39:05
  • Spring Security使用中Preflight请求和跨域问题详解

    2021-06-12 11:04:15
  • C#实现顺序栈和链栈的代码实例

    2021-08-17 02:36:40
  • Maven 主模块和子模块pom.xml依赖声明

    2022-09-12 21:20:10
  • Unity实现游戏伤害数字显示HUD的方法

    2023-05-18 06:47:01
  • native.js获取手机硬件基本信息实例代码android版

    2023-10-19 13:33:09
  • Java实现Redis的集合(set)命令操作

    2022-05-08 11:07:03
  • HashMap 和 HashSet的区别

    2023-01-05 22:45:30
  • Android jni调试打印char阵列的实例详解

    2022-06-18 14:55:40
  • Android实现带动画效果的可点击展开TextView

    2023-08-06 05:42:08
  • 解析spring boot与ireport 整合问题

    2021-12-15 17:49:25
  • asp之家 软件编程 m.aspxhome.com