Jan*_*tze 28 spring-security spring-boot spring-security-rest spring-webflux
我想使用Spring Security进行JWT身份验证.但它带有默认身份验证.我试图禁用它,但是这样做的旧方法 - 禁用它application.properties- 在2.0中已弃用.
这是我试过的:
@Configuration
public class StackWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().disable();
// http.authorizeRequests().anyRequest().permitAll(); // Also doesn't work.
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能简单地禁用基本安全性?
更新
可能很高兴知道我不使用web mvc而是web flux.
Sen*_*Sen 33
根据Spring 2.0中的新更新,如果Spring Security在类路径上,Spring Boot将添加@EnnWebSecurity.So向application.properties添加条目是不行的(即它不再可以这样定制).有关更多信息,请访问官方网站Spring Boot 2.0中的安全性更改
虽然不确定您的要求,我可以想到一个解决方法如下: -
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception{
http.authorizeRequests().antMatchers("/").permitAll();
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
Bri*_*zel 13
根据参考文档,允许使用WebFlux的所有请求的安全配置应如下所示:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http.authorizeExchange().anyExchange().permitAll();
return http.build();
}
}
Run Code Online (Sandbox Code Playgroud)
Int*_*uff 13
从Spring Boot 2.1开始,如果包含spring-boot-actuator,仅排除SecurityAutoconfiguration就不再足够了,还需要排除ManagementWebSecurityAutoConfiguration,如下所示:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class })
Run Code Online (Sandbox Code Playgroud)
dav*_*avo 11
这对我有用:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests().anyRequest().permitAll();
}
}
Run Code Online (Sandbox Code Playgroud)
hel*_*lmy 11
您可以在Application类中添加/修改以下内容:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class MyApplication {
}
Run Code Online (Sandbox Code Playgroud)
添加一些新的答案,我假设所有都使用执行器,如果不是,我打赌一类排除应该足够了,我设法通过属性禁用:
spring:
autoconfigure:
exclude: ${spring.autoconfigure.sac}, ${spring.autoconfigure.mwsas}
sac: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
mwsas: org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
Run Code Online (Sandbox Code Playgroud)
我通过属性引用了两个自动配置类以保持长度完整(请注意,如果您像这样引用它,IntelliJ Ultimate 会哭,因为它不知道这些占位符值是什么以及它们是否实际上是合法的类,因此内联如果这让你很烦恼)。
然而,应用程序不会像所声称的那样无法启动:
https://www.baeldung.com/spring-boot-security-autoconfiguration
如果你只是禁用SecurityAutoConfiguration
如果它确实有效,您将不再看到自动生成的密码,并且它比接受的答案稍微不那么混乱,因为读取日志的开发人员不会因基本身份验证的生成密码而感到困惑,而安全性允许一切。
为什么仅仅禁用主自动配置类还不够,是因为这个家伙:
@Configuration
class ManagementWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers(
EndpointRequest.to(HealthEndpoint.class, InfoEndpoint.class))
.permitAll().anyRequest().authenticated().and().formLogin().and()
.httpBasic();
}
}
Run Code Online (Sandbox Code Playgroud)
为了分割执行器和安全配置,我们做了大量的工作,这让我们所有人都感到困惑,现在它变得更加简单,但像这样的工件仍然存在。如果我错了,Spring 开发人员会纠正我:-)。
| 归档时间: |
|
| 查看次数: |
44038 次 |
| 最近记录: |