You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security内存认证首次通过后任意密码均可通过问题排查

问题根源与解决方案

你的问题核心是HTTP Basic认证的客户端缓存+Spring Security会话默认行为导致的异常:

  1. Postman等客户端会自动缓存HTTP Basic的Authorization请求头,修改密码后未清除缓存时,依然会发送旧认证凭证,因此能继续通过认证。
  2. Spring Security默认会创建会话,认证成功后会话会被保留,后续请求只要携带有效的会话ID(如JSESSIONID),就会直接放行,不再验证密码,所以出现"正确认证后错误密码也能访问"的情况。

具体修复配置

1. 配置无状态认证(核心修改)

Basic认证多用于无状态场景,修改configure(HttpSecurity)方法,强制Spring Security不创建会话,每次请求都重新验证凭证:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS) // 关键:禁用会话,每次请求重新验证
            .and()
        .authorizeRequests()
            .anyRequest().authenticated()
            .and()
        .httpBasic();
}

2. 清除客户端缓存

在Postman中处理缓存问题:

  • 打开请求的Authorization标签,选择Basic Auth,点击Clear credentials;
  • 或者直接删除请求头中的Authorization字段,重新输入新的用户名密码。

验证步骤

  1. 修改配置后重启应用;
  2. 用错误密码请求,返回401(符合预期);
  3. 用正确密码请求,返回200;
  4. 再用错误密码请求,返回401(无状态模式下每次都验证凭证,会拒绝错误请求);
  5. 修改密码后,清除客户端缓存,用新密码请求通过,旧密码请求返回401。

内容的提问来源于stack exchange,提问作者skywalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:30:53