我将Spring Security会话管理设置为无状态:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic();
}
这是我第二次请求时得到的请求头。浏览器在第一次登录尝试通过身份验证后将凭据存储在cookie中,并在后续请求的授权头中使用它。即使我重新启动服务器也会发生这种情况。只有当我清除所有cookie时,浏览器才会再次请求凭据。
我注意到的一件事是,通过设置会话管理ALWAYS
,JSESSIONID
会包含在第一个请求响应(Set-cookie
响应头)中,但对于后续请求,该值不会包含在浏览器请求头中。
如果真是这样的话,那么如果这些策略(无状态和总是)没有区别(用户只需要第一次进行身份验证),那么将会话策略设置为无状态对于安全性的真正用例是什么?
1条答案
按热度按时间hc8w905p1#
如果你是无会话和http basic,那么基本的auth授权头必须和每个请求一起发送(并且每个请求都要重新认证)。否则请求就不会被授权,用户也是未知的。根据我的经验,如果你是无会话的,使用一个令牌(而不是basic)会更常见。