Keycloak spring-security适配器:antMatchers(“ / **”)。authenticated()无法启动认证过程

时间:2019-11-01 10:50:29

标签: spring-security

我正在使用spring-security 5.2,并在配置中编写以下http.csrf().disable().authorizeRequests() .antMatchers("/login*", "/js/**", "/css/**", "/vendors/**", "/images/**").permitAll() .antMatchers("/**").authenticated();

应用程序网址类似于http://localhost:8080/myApp 问题是当我调用应用程序URL时,未调用身份验证入口点。

仅当我将最后一行修改为.antMatchers(“ / main *”)。authenticated();时,然后调用http://localhost:8080/myApp/main一切正常。

我正在使用Keycloak Spring安全适配器配置Keycloak SSO服务器(7.0.1)+。所以我想知道,为什么在.antMatchers(“ / **”)。authenticated()情况下不调用Keycloak Entry点,而仅在我写了类似.antMatchers(“ / main *”)。authenticated()的情况下才调用Keycloak入口点)。

任何人都可以解释我原始代码中的错误吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您的spring安全配置类扩展了KeycloakWebSecurityConfigurerAdapter,您调用了super.configure(http)?如果是,则您的登录页面不是/ login,而是/ sso / login。并且注销成功页面被映射到/。映射成功注销页面时,Spring会自动将其安全性设置为allowAll。因此,您可以尝试将注销成功页面更改为另一个URL,以检查其是否可以解决您的问题 像

    http.csrf().disable().authorizeRequests()
    .antMatchers("/js/**", "/css/**", "/vendors/**", "/images/**").permitAll()
    .antMatchers("/**").authenticated()
    .anyRequest().permitAll()
    .and().logout().logoutSuccessUrl("/loggedout");