尽管我使用的是SessionCreationPolicy,java Spring安全性似乎仍在使用会话。无国籍
我使用Spring Security来保护使用OAuth的应用程序。我想让它成为无状态的,所以我有一个自定义的身份验证过滤器,它基于来自客户端的令牌进行身份验证。我对Spring Security的配置如下:
@Override
protected void configure(HttpSecurity http) throws Exception {
// require https
http.requiresChannel().antMatchers("/**").requiresSecure().and().portMapper().http(80).mapsTo(443);
http.antMatcher("/**").authorizeRequests().anyRequest().authenticated().and()
.cors().and()
.csrf().disable()
.addFilterBefore(customOAuth2Filter(), BasicAuthenticationFilter.class)
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
}
如您所见,我使用的是SessionCreationPolicy。无状态,这意味着Spring安全性从不使用会话。但是,如果我登录并尝试在没有令牌的情况下访问受保护的端点(例如,如果我关闭选项卡,然后在新选项卡中打开受保护的端点,或者如果我只是刷新页面),应用程序将在端点处为我提供数据,而不是要求我再次登录
所以,尽管我使用的是SessionCreationPolicy,但似乎仍在使用会话。无国籍。但是,我确实注意到,发送的每个请求的JSESSIONID与前一个响应的set-cookie头中的JSESSIONID不匹配。不知道为什么,也不知道新的JSESSIONID来自哪里
如何使没有令牌的后续请求再次要求登录?如果您能了解这里发生的一切,我们将不胜感激,谢谢
共 (0) 个答案