Kiedy używam security.basic.enabled = false, aby wyłączyć zabezpieczenia w projekcie Spring Boot, który ma następujące zależności:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Widzę następujący wyjątek:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration$ManagementWebSecurityConfigurerAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.setObjectPostProcessor(org.springframework.security.config.annotation.ObjectPostProcessor); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.config.annotation.ObjectPostProcessor] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Aby naprawić ten wyjątek, musiałem dodać właściwość - management.security.enabled = false . Rozumiem, że gdy aktywator znajduje się w ścieżce klas, zarówno security.basic.enabled = false, jak i management.security.enabled = false powinny być ustawione, aby wyłączyć zabezpieczenia.
Czy ktoś mógłby mnie poinformować, jeśli moje rozumienie jest błędne?
spring-security
spring-boot
user3600073
źródło
źródło
ClientDetails
. Będziesz mieć przechodni import zabezpieczeń wiosennych, ale może nie chcesz mieć podstawowego uwierzytelniania w swojej usłudze.Odpowiedzi:
Wydaje się, że działa dobrze, tworząc plik
application-dev.properties
zawierający:Jeśli następnie uruchomisz aplikację Spring Boot z
dev
profilem, nie musisz się logować.źródło
security.ignored=/**
pracowałem. stackoverflow.com/a/36280413/3291867Jeśli w opakowaniu znajduje się siłownik ze sprężyną rozruchową, należy dodać następujące elementy
W przypadku starszego Spring-boot klasa została nazwana
ManagementSecurityAutoConfiguration
.W nowszych wersjach zmieniło się to na
źródło
Jeśli potrzebujesz zabezpieczeń jako zależności, ale nie chcesz, aby Spring Boot konfigurował je za Ciebie, możesz użyć tego wykluczenia:
źródło
W przypadku użytkowników butów sprężynowych 2 musi to być
źródło
@EnableWebSecurity
adnotacjęW przypadku rozruchu Spring Boot 2 następujące właściwości są nieaktualne w konfiguracji application.yml
Aby wyłączyć zabezpieczenia dla Sprint Boot 2 Basic + Actuator Security , można użyć następujących właściwości w pliku application.yml zamiast wykluczania na podstawie adnotacji (@EnableAutoConfiguration (exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}))
Dla application.properties składnia byłaby podobna
źródło
Krok 1: Adnotacja komentarza @EnableWebSecurity w konfiguracji zabezpieczeń
Krok 2: Dodaj to do pliku application.properties .
Więcej szczegółów można znaleźć tutaj: http://codelocation.com/how-to-turn-on-and-off-spring-security-in-spring-boot-application/
źródło
Dodaj następującą klasę do swojego kodu
I wstawka application.properties add
źródło
Jeśli używasz
@WebMvcTest
adnotacji w swojej klasie testowejnie pomaga.
Tutaj możesz wyłączyć zabezpieczenia
źródło
Odpowiedzią jest zezwolenie na wszystkie żądania w WebSecurityConfigurerAdapter, jak poniżej.
możesz to zrobić w istniejącej klasie lub w nowej klasie.
Uwaga: jeśli istnieje już klasa GlobalMethodSecurityConfiguration, musisz ją wyłączyć.
źródło
Zezwól na dostęp do wszystkiego, używając antMatchers („/”)
źródło
Ja po prostu dodaje się
security.ignored=/**
wapplication.properties
, i że zrobił urok.źródło
Aby uniknąć bezpieczeństwa, możesz użyć adnotacji. Użyj tej adnotacji na górze klasy configure:
Na przykład:
źródło
@EnableWebSecurity
wyłączyć zabezpieczenia internetowe?Musisz dodać ten wpis do application.properties, aby ominąć domyślne zabezpieczenia Springboot
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
Wtedy nie będzie żadnego pola uwierzytelniania. otrws, poświadczenia to: -
user
i99b962fa-1848-4201-ae67-580bdeae87e9
(hasło generowane losowo)Note: my springBootVersion = '1.5.14.RELEASE'
źródło
Możesz skonfigurować przełączanie zabezpieczeń sprężyn w projekcie, wykonując poniższe 2 kroki:
KROK 1: Dodaj
@ConditionalOnProperty
adnotację na górze klasy SecurityConfig. Zobacz poniżej:KROK 2: Dodaj następującą konfigurację do swojego pliku
application.properties
lubapplication.yml
.application.properties
LUB
application.yml
źródło
Jedyna rzecz, która działała dla mnie:
i
Możliwe, że część dotycząca właściwości jest zbędna lub może być wykonana w kodzie, ale nie miała czasu na eksperymenty. W każdym razie jest to tymczasowe.
źródło
Najłatwiejszym sposobem na Spring Boot 2 bez zależności lub zmian w kodzie jest po prostu:
źródło
Dodaj poniższe wiersze do swojej głównej aplikacji.
Usuń org.activiti.spring.boot.SecurityAutoConfiguration.class, jeśli nie używasz activiti.
Podobnie, zdejmij ten dla siłownika, jeśli nie używasz siłownika ze sprężyną rozruchową.
źródło
Jak wspomniano wcześniej, wiele rozwiązań wyłączających zabezpieczenia poprzez komentowanie
adnotacja i inne odbywa się za pośrednictwem właściwości w application.properties lub yml. Ale te właściwości są wyświetlane jako przestarzałe w najnowszej wersji rozruchu wiosennego.
Chciałbym więc podzielić się innym podejściem do konfiguracji domyślnej nazwy użytkownika i hasła w twoim application-dev.properties lub application-dev.yml i używaniu ich do logowania się do Swagger itp. W środowisku programistycznym.
Tak więc takie podejście zapewnia również pewien rodzaj bezpieczeństwa i możesz udostępniać te informacje swojemu zespołowi programistów. Możesz także skonfigurować role użytkowników, ale nie jest to wymagane na poziomie programowania.
źródło
Dodałem poniżej ustawienia w application.yml i działało dobrze.
można to przekonwertować jak w
security.route-paterns-to-be-skipped=/**/*
przypadku application.propertiesźródło