【问题标题】:Prevent session creation when using basic auth in spring security在 Spring Security 中使用基本身份验证时防止创建会话
【发布时间】:2018-11-29 22:18:20
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您将解决方案作为自己问题的答案,将会更好,更有条理。

标签: spring-security


【解决方案1】:

经过一番研究,我找到了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

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 2016-03-20
    • 1970-01-01
    • 2016-10-17
    • 2021-09-19
    • 2016-04-30
    • 2013-01-11
    • 2015-07-22
    • 2013-02-11
    相关资源
    最近更新 更多