我正在使用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入口点)。
任何人都可以解释我原始代码中的错误吗?
谢谢
答案 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");