我正在尝试使用Spring Security java配置来保护Web应用程序。
这是配置的外观: -
@Configuration
@EnableWebMvcSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private String googleClientSecret;
@Autowired
private CustomUserService customUserService;
/*
* (non-Javadoc)
*
* @see org.springframework.security.config.annotation.web.configuration.
* WebSecurityConfigurerAdapter
* #configure(org.springframework.security.config
* .annotation.web.builders.HttpSecurity)
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/","/static/**", "/resources/**","/resources/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic().disable()
.requiresChannel().anyRequest().requiresSecure();
// @formatter:on
super.configure(http);
}
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
// @formatter:off
auth
.eraseCredentials(true)
.userDetailsService(customUserService);
// @formatter:on
super.configure(auth);
}
}
请注意,我已使用以下方法显式禁用了HTTP基本身份验证: -
.httpBasic().disable()
我在访问安全网址时仍然会收到HTTP Authenticaton提示框。为什么呢?
请帮我解决这个问题。 我只想渲染捆绑的默认登录表单。
Spring Boot Starter版本:1.1.5 Spring Security版本:3.2.5
由于
答案 0 :(得分:19)
首先,调用super.configure(http);
将覆盖您之前的整个配置。
请改为尝试:
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic().disable();
答案 1 :(得分:6)
如果你使用Spring Boot,documentation状态:
完全在Web中关闭引导默认配置 您可以使用@EnableWebSecurity
添加一个bean
因此,如果您想完全自定义可能是一个选项。
只是为了说清楚......你只需要在主应用程序类或应用程序配置类上放置@EnableWebSecurity注释。
答案 2 :(得分:4)
您可以通过HttpSecurity实例禁用formLogin,如下所示:
http.authorizeRequests().antMatchers("/public/**").permitAll()
.antMatchers("/api/**").hasRole("USER")
.anyRequest().authenticated()
.and().formLogin().disable();
这将导致在尝试访问任何安全资源时收到403 Http错误
答案 3 :(得分:2)
匿名选项对我有用。我的代码就像
http.csrf().disable().headers().frameOptions().sameOrigin().and().
authorizeRequests().anyRequest().anonymous().and().httpBasic().disable();
答案 4 :(得分:0)
适用于Spring Boot或使用OAuth的人
input {
border: 4px solid #e3e3e3;
padding:10px;
width:100%;
}
.container {
width:50%;
margin: auto;
position:relative;
}
.suggested {
position:absolute;
top:25px;
left:25px;
color:#e3e3e3;
z-index:-1;
}
如果使用@ EnableOAuth2Client或@EnableResourceServer,则在测试配置文件中切换到基本身份验证,然后禁用该功能。在Spring Boot中,要完全关闭Web应用程序中的spring安全默认配置,您需要使用@EnableWebSecurity添加一个bean
答案 5 :(得分:-6)
以下对我有用:
http
.authorizeRequests()
.anyRequest().permitAll();