有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

尽管我使用的是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) 个答案