2017-06-27 5 views
1

Ich würde versuchen, basic authentication mit Passwort-Hash-Verschlüsselung zu aktivieren.Wie Spring-Sicherheit durch application.properties deaktiviert?

Ich möchte die Authentifizierung nur in der Produktion aktiv sein. Also versuche ich es in der Regel auf den ersten, die Verwendung zu deaktivieren:

security.basic.enabled=false

Ergebnis: die Anwendung noch gesichert ist. Mir wird der Benutzername/Passwort-Bildschirm angezeigt.

Aber wie konnte ich dann die Notwendigkeit der Authentifizierung deaktivieren?

Antwort

1

mit ConditionalOnProperty Gelöst:

@Configuration 
@ConditionalOnProperty("security.basic.enabled") 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

} 
-1

Um feder Sicherheit die automatische Konfiguration vollständig verwenden Sie die folgende Eigenschaft

spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration 
1

, um verschiedene Dinge zu tun in verschiedenen Umgebungen zu deaktivieren, sollten Sie Spring Profiles

verwenden Sie Sicherheitskonfiguration Bohne Angenommen, brauchen Sie nur in der Produktionsumgebung, dann sollte es als bedingt geladen markieren, wenn ein bestimmtes Profil aktiviert ist.

@Configuration //gets picked up automatically by spring-boot 
@Profile("Production") 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
      auth.userDetailsService(details).passwordEncoder(new BCryptPasswordEncoder()); 
    } 
} 

Profil spezifische Konfiguration wird in Eigenschaftsdateien getan namens application-{profile}.properties und bootstrap-{profile}.properties Dateien.

Jetzt, da Sicherheitskonfiguration Bean mit Profil Production markiert ist, wird es nur geladen, wenn Production Profil aktiviert ist.

Um ein Profil zu aktivieren, müssen Sie folgende Eigenschaft einstellen.

#One or more profiles can be active simultaneously 
spring.profiles.active=Production,Dev,Local 

Diese Eigenschaft kann entweder in den gemeinsamen Eigenschaften application.properties (immer anders als Profildateien spezifische Eigenschaften wie application-Production.properties geladen, die bedingt geladen werden) Datei bearbeitet werden oder es kann, wie unten als Umgebungsvariablen zur Verfügung gestellt.

On Windows 
set SPRING_PROFILES_ACTIVE=Production 
On Unix 
export SPRING_PROFILES_ACTIVE=Production 

Es kann mit einer Million anderer Möglichkeiten, die Feder unterstützt, um Eigenschaften zu laden getan werden. Für eine Liste aller Methoden gehen Sie über diesen Link https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Schließlich, um die Standard-Spring-Sicherheit (Basic) Autoconfiguration zu deaktivieren, können Sie folgende Eigenschaften verwenden.

Oben sollte in den profilspezifischen Eigenschaftendateien sein, in denen Sie die automatische Konfiguration von Spring Security deaktivieren möchten.

+0

Wie oben geschrieben, ich habe bereits versucht, 'security.basic.enabled = false' verwenden, die normalerweise funktionieren sollte, aber nicht der Fall ist, wenn mit' 'WebSecurityConfigurerAdapter. – membersound

+0

Das liegt daran, dass 'WebSecurityConfigurerAdapter' immer noch eine Bean erstellt, die wie am Anfang der Antwort erwähnt bedingt geladen werden muss. – 11thdimension

+0

Ich erweiterte WebSecurityConfigurerAdapter zweimal und arbeitete wie oben beschrieben. Lief wie am Schnürchen. – DOUBL3P

Verwandte Themen