在Spring Security中使用基本身份验证时阻止会话创建

时间:2018-06-20 17:35:31

标签: spring-security

当我使用基本身份验证向RESTful API请求时,如何防止/避免会话创建?

我的应用程序的前端需要会话,但是其他一些应用程序则通过RESTful API与之通信。在那种情况下,我需要阻止创建会话,因为我的应用程序具有一个会话管理,每个用户限制1个会话。

我今天的问题是,这另一个应用程序使活动的浏览器会话无效,因为另一个应用程序使用的是浏览器使用的同一用户。

1 个答案:

答案 0 :(得分:0)

经过一番研究,我发现了solution using Multiple HttpSecurity configurations。我创建了2个安全配置。

仅当存在特定的HEADER且在此配置下,会话管理为 STATELESS

时,才应用我的主要数据库
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //@formatter:off
        http.requestMatcher(new RequestMatcher() {
            @Override
            public boolean matches(HttpServletRequest request) {
                return request.getHeader(CheckVersionAspect.ESB_VERSION_HEADER) != null ||
                        request.getHeader(CheckVersionAspect.PDV_VERSION_HEADER) != null;
            }
        }).authorizeRequests()
            .anyRequest().authenticated()
        .and()
            .httpBasic()
        .and()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
        //@formatter:on
    }

第二种配置继续进行会话管理,以限制每个用户1个会话。

贷记this answer