Spring Security - intervalo de IP da lista de permissões
Muitos recursos e perguntas de fluxo de pilha que eu vi fornecem respostas para o uso.xml
arquivos:
Filtro IP usando Spring Security
http://docs.spring.io/spring-security/site/docs/3.0.x/reference/appendix-namespace.html#nsa-gms
Tudo o que eu gostaria de saber é se é possível incluir na lista branca um intervalo de endereços IP usando o Spring Security sem usar configurações XML?
Abaixo está um método simples no meu controlador:
@RequestMapping(value = "/makeit", method = RequestMethod.GET)
@ResponseBody
//@PreAuthorize("hasIpAddress('192.168.0.0/16')")
public String requestData() {
return "youve made it";
}
Criei uma classe separada para a configuração de segurança, mas ela não tem muito, apenas a criei para oEnableGlobalMethodSecurity
anotação - para que eu possa usar o@PreAuthorize
anotação (de uma resposta aqui:A anotação @PreAuthorize não funciona na segurança da primavera)
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SpringConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http
.authorizeRequests()
.anyRequest().access("hasIpAddress('0.0.0.0/0')");
/*http
.authorizeRequests()
.anyRequest().hasIpAddress("0.0.0.0/0");*/
/*http
.authorizeRequests()
.antMatchers("/**").hasIpAddress("0.0.0.0/0");*/
/*http
.authorizeRequests()
.antMatchers("/**").access("hasIpAddress('0.0.0.0/0')");*/
/*http
.authorizeRequests()
.anyRequest().access("hasIpAddress('0.0.0.0/0')");*/
}
}
No entanto, quando tentei, ele respondeu com (através do POSTMAN):
{
"timestamp": 1486743507520,
"status": 401,
"error": "Unauthorized",
"message": "Full authentication is required to access this resource",
"path": "/makeit"
}
Fatos adicionais:
Meu endereço IP está neste intervalo. E estou usando o Spring versão 1.3.1 (o Spring Security é 4.0.3, acredito).