java 无状态会话策略不会阻止浏览器在后续请求中缓存用户凭据

q5iwbnjs  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(115)

我将Spring Security会话管理设置为无状态:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
        .authorizeRequests()
            .anyRequest().authenticated()
            .and()
        .httpBasic();
}

这是我第二次请求时得到的请求头。浏览器在第一次登录尝试通过身份验证后将凭据存储在cookie中,并在后续请求的授权头中使用它。即使我重新启动服务器也会发生这种情况。只有当我清除所有cookie时,浏览器才会再次请求凭据。
我注意到的一件事是,通过设置会话管理ALWAYSJSESSIONID会包含在第一个请求响应(Set-cookie响应头)中,但对于后续请求,该值不会包含在浏览器请求头中。
如果真是这样的话,那么如果这些策略(无状态和总是)没有区别(用户只需要第一次进行身份验证),那么将会话策略设置为无状态对于安全性的真正用例是什么?

hc8w905p

hc8w905p1#

如果你是无会话和http basic,那么基本的auth授权头必须和每个请求一起发送(并且每个请求都要重新认证)。否则请求就不会被授权,用户也是未知的。根据我的经验,如果你是无会话的,使用一个令牌(而不是basic)会更常见。

相关问题