2017-03-26 4 views
0

Ich habe eine einfache Spring-Boot-App mit Feder Sicherheit für SSL und X509 Client-Zertifikat.Der Versuch, Frühling Sicherheit mit optionalen X509 Client-Zertifikat verwenden

Ich möchte es im Dev-Modus mit nur http und kein Client-Zertifikat ausführen. Und Prod-Modus mit HTTPS und X509-Zertifikat.

Ich habe einfache Demo-App, die die sichere Website läuft OK. https://[email protected]/coling01/ssldemo.git

die sichere Website mit Zertifikat Schlagen funktioniert OK a) curl --cacert server.pem --cert client1.p12: changeit https://localhost:8443/demo

Ich möchte unsicheren Modus und es wechseln können, treffen als b) http auf Port80 ohne Zertifikate (Ich habe Port 8080 läuft und es reagiert, aber trifft einen Fehler beim Überprüfen Client-Zertifikat, das nicht bestanden wird)

Irgendwelche Ideen? Ich hoffte, dass es einen einfachen Schalter geben würde, um client-auth zu deaktivieren, aber ich kann das nicht finden.

+0

Fügen Sie bitte [mcve] hinzu. Codebeispiele sollten in der Frage enthalten sein, nicht auf der externen Website. – zett42

Antwort

0

Federprofile nach Mkyong's example verwenden. Damit Sie 2 verschiedene WebSecurityConfigurerAdapter s erstellen,

erste für dev Profil:

@Profile("dev") 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class DevSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
     .anyRequest().permitAll(); 
    } 
} 

und 2. eine Produktion bereit und gesichert:

@Profile("prod") 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class ProductionSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests() 
     .anyRequest().authenticated() 
     .and() 
     .x509() 
     .subjectPrincipalRegex("CN=(.*?)(?:,|$)") 
     .userDetailsService(userDetailsService()); 
    } 
} 

hoffe, das hilft!

Verwandte Themen