小编Tok*_*kyo的帖子

Spring Security 基本身份验证密码轮换问题

专家,,

我有一个 Spring Boot 2.5.5 应用程序(嵌入式 tomcat),我必须在其中配置基本身份验证。

这是我的课程,可以为我完成工作

@Component
@EnableWebSecurity
public class ApplicationSecurityConfig extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .httpBasic();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我只需要在浏览器中输入用户/密码一次,它就适用于任何后续请求。此外,在服务器重新启动后我不需要提供新的用户名/密码,这让我抓狂 - 应用程序仍然有效,我可以访问我的 API/页面。

即使我假设浏览器以某种方式保存用户名和密码,一旦服务器因密码更改而重新启动,它就不应该工作 - 不是吗?

更新二:

按照M. Deinum的建议,我将会话设置为无状态,并且成功了。然后,我继续使用 InMemoryUserDetailsManager 实现基本身份验证,并添加以下代码,我们再次回到同一问题。凭据似乎再次存储在会话中,我不需要为后续请求传递它们。

@Autowired
    public ApplicationSecurityConfig(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }

    @Override
    @Bean
    protected UserDetailsService userDetailsService() {
        UserDetails user = User
                .builder()
                .username("admin")
                .password(passwordEncoder.encode("admin"))
                .roles("ADMINISTRATOR")

                .build();
        return new InMemoryUserDetailsManager(user);
    }
Run Code Online (Sandbox Code Playgroud)

spring spring-security basic-authentication spring-boot

0
推荐指数
1
解决办法
561
查看次数