【发布时间】:2017-05-10 05:37:54
【问题描述】:
我有一个基于 Spring 构建的 Web 服务。我目前正在使用 Spring Security 进行身份验证,如下所示:
@Configuration
@EnableGlobalMethodSecurity(securedEnabled=true)
@EnableWebSecurity
public class ServerSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private Properties properties;
private static final String ALL_URI = "/v1/**";
private static final String HEALTH_URI = "/v1/healthCheck";
@Override
protected void configure(HttpSecurity http) throws Exception {
http.addFilterBefore(getFilter(), BasicAuthenticationFilter.class);
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeRequests()
.antMatchers(HEALTH_URI).permitAll()
.anyRequest().authenticated();
http.csrf().disable();
}
private AuthenticationFilter getFilter() {
return new AuthenticationFilter( properties.getKey());
}
}
我的AuthenticationFilter 类扩展AbstractAuthenticationProcessingFilter 并执行实际的身份验证。如果我想将授权添加到我的安全性中,我是否只需在 AuthenticationFilter 之外的 attemptAuthentication 方法中进行这些检查?或者有更好的方法吗?我理解的方式是授权和身份验证应该独立完成。您首先进行身份验证,然后验证权限。所以,我认为会有更好的方法在 Spring Security 中进行授权,而不仅仅是将其添加到 attemptAuthentication 方法中。
【问题讨论】:
标签: java spring authentication spring-security authorization