Spring Boot 2.0.0에서 인증 관리자를 자동으로 연결할 수 없습니다.
그래서 저는 간단한 Spring MVC 앱에서 oAuth2를 구현하려고 노력해 왔습니다.
내가 따르던 가이드에서, 그들의AuthorizationServerConfigurerAdapter
그들은@Autowired
하나의AuthenticationManager
그들은 Spring Boot 버전 1.5.2를 사용했습니다.
Spring Boot 2.0.0은 최신 버전이기 때문에 사용하고 싶어서 최신 사례를 배우고 싶었습니다.그러나 변경할 때 pom.xml에서 다음을 수행합니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
대상:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
갑자기 자동 배선이 안 돼요.AuthenticationManager
.
Could not autowire. No beans of 'AuthenticationManager' type found.
누가 이것에 대한 해결책을 생각해 낼 수 있습니까?
감사합니다!
부트 스타터 패키지를 계속하려면 릴리스 정보에 따라 재정의해야 합니다.authanticationManagerBean
내부의 방법WebSecurityConfigurerAdapter
코드 샘플:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
Spring Boot의 최신 버전2.7.2
,학급WebSecurityConfigurerAdapter
더 이상 사용되지 않으며 보안 구성을 작성하려면 새로운 스타일을 사용해야 합니다.
WebSecurityConfigurer 어댑터가 없는 Spring Security
Spring Boot 2.7.2에서는 아래와 같은 것이 작동합니다. 들어오는 JWT 토큰을 확인하기 위해 연결해야 하는 JWT 토큰 필터가 있습니다.의 사용법을 강조하려고 합니다.SecurityFilterChain
&AuthenticationConfiguration
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
import org.springframework.security.web.util.matcher.RequestMatcher;
//import my custom jwt class package;
import lombok.RequiredArgsConstructor;
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class WebSecurityConfig {
private final AuthenticationConfiguration authConfiguration;
@Bean
public AuthenticationManager authenticationManager() throws Exception {
return authConfiguration.getAuthenticationManager();
}
@Autowired
public void configure(AuthenticationManagerBuilder builder, AuthenticationProvider jwtAuthenticationProvider) {
builder.authenticationProvider(jwtAuthenticationProvider);
}
@Bean
public SecurityFilterChain configure(HttpSecurity http, AuthenticationEntryPoint authenticationEntryPoint,
RequestMatcher requestMatcher)
throws Exception {
http.cors().and().csrf().disable().exceptionHandling().authenticationEntryPoint(authenticationEntryPoint).and()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.antMatchers(HttpMethod.GET, List.of("/favicon.ico", "/**/*.html").toArray(new String[0])).permitAll();
AbstractAuthenticationProcessingFilter jwtFilter = new MyCustomClass(requestMatcher);
jwtFilter.setAuthenticationManager(authenticationManager());
http.addFilterBefore(jwtFilter, BasicAuthenticationFilter.class);
return http.build();
}
}
언급URL : https://stackoverflow.com/questions/49348551/could-not-autowire-authentication-manager-in-spring-boot-2-0-0
'programing' 카테고리의 다른 글
다른 테이블스페이스를 사용하여 쿼리에서 테이블 만들기(Oracle SQL) (0) | 2023.07.06 |
---|---|
다른 벡터의 값을 기준으로 한 벡터를 정렬하려면 어떻게 해야 합니까? (0) | 2023.07.06 |
원격 태그를 보는 방법? (0) | 2023.07.01 |
인터op dll이란 무엇입니까? (0) | 2023.07.01 |
UIT 텍스트 보기를 반올림된 직사각형 텍스트 필드처럼 스타일을 지정하는 방법은 무엇입니까? (0) | 2023.07.01 |