Ich versuche, herauszufinden, wie die folgenden mit Spring Security zu tun:erlauben den Zugriff auf eine URL mit Benutzername/Passwort und andere aus der IP-Adresse
Ich brauche den Zugriff von außen auf einen bestimmten Endpunkt zu ermöglichen, bei /webhooks/
, aber schützen Sie sie mit einem HTTP-Basis-Benutzernamen/Passwort. Auf allen anderen Endpunkten muss der Zugriff eingeschränkt sein, außer von bestimmten Subnetzen.
Hier ist, was ich bisher habe. Es funktioniert nicht, da alles abgelehnt wird.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* Created on 27 July 2016 @ 1:49 PM
* Component for project "security"
*/
@Configuration
@EnableWebSecurity
@PropertySource("classpath:/test.properties")
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${test.webhooks.username}")
private String username;
@Value("${test.webhooks.password}")
private String password;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/webhooks/").authenticated()
.and().authorizeRequests()
.antMatchers("/**").hasIpAddress("10.0.0.0/8")
.antMatchers("/**").hasIpAddress("172.16.0.0/16")
.antMatchers("/**").hasIpAddress("192.168.1.0/24")
.antMatchers("/**").hasIpAddress("172.0.0.0/8")
.antMatchers("/**").denyAll()
;
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder
.inMemoryAuthentication()
.withUser(username).password(password).roles("WEBHOOKS_ACCESS")
;
}
}
Jede Hilfe wäre genial! Ich bin mir nicht sicher, ob die angeketteten Ameisen-Matcher auf jeden Fall korrekt sind.