inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Users Microservice - 인증처리구현

Users Microservice - AuthenticationFilter 추가 | 질문있습니다.

1414

kanye

작성한 질문수 1

1

최신버전의 스프링부트에서 WebSecurityConfigurerAdapter가 더이상 지원하지 않는다고 하는데 WebSecurity클래스의 코드를 어떻게 작성해야 하나요? 빈 등록 하라고 하는데 정확히 어떤식으로 진행해야할지 몰라서 이렇게 남깁니다. 항상 좋은 강의 감사합니다.

spring-boot JPA architecture spring-cloud msa Kafka

답변 1

2

seonjun Moon

우선은 무시하고 그냥 동이랗게 진행하시고, 나중에 찾아서 해보시길 바랍니다.

그거 하다 보면 엄청많은 문제에 직면하면서 본래 강의를 못들을겁니다... 저는 전에 하다가 죽을뻔햇습니다...

정 궁금하시면 여기 사이트 참고하시면 됩니다.

https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter

저는 많은 시행착오와 위의 사이트 참고, 그리고 다른 spring security 강의를 들어서 다음과같이 수정이 가능햇습니다.!

 

package com.example.userservice.security;

import com.example.userservice.jpa.UserRepository;
import com.example.userservice.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.core.env.Environment;
import org.springframework.security.authentication.AuthenticationManager;
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.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    private UserService userService;
    private AuthenticationConfiguration authenticationConfiguration;
    private Environment env;

    @Autowired
    public void setUserService(@Lazy UserService userService) {
        this.userService = userService;
    }

    @Autowired
    public void setAuthenticationConfiguration(AuthenticationConfiguration authenticationConfiguration) {
        this.authenticationConfiguration = authenticationConfiguration;
    }

    @Autowired
    public void setEnv(Environment env) {
        this.env = env;
    }

    @Bean
    public AuthenticationManager authenticationManager() throws Exception{
        return this.authenticationConfiguration.getAuthenticationManager();
    }

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.csrf().disable();
//        http.authorizeRequests().antMatchers("/users/**").permitAll();
        http.authorizeRequests().antMatchers("/**")
                .permitAll().and().addFilter(getAuthenticationFiler());
//                .antMatchers("/**")
//                .hasIpAddress("192.168.219.101")
//                .and()
//                .addFilter(getAuthenticationFiler());

        http.headers().frameOptions().disable();
        return http.build();
    }

    @Bean
    public AuthenticationFilter getAuthenticationFiler() throws Exception {
        AuthenticationFilter authenticationFilter = new AuthenticationFilter();
        authenticationFilter.setAuthenticationManager(authenticationManager());
        return authenticationFilter;
    }

    @Bean
    AuthenticationManager authenticationManager(AuthenticationManagerBuilder builder) throws Exception {
        return builder.userDetailsService(userService).passwordEncoder(passwordEncoder()).and().build();
    }


}

기본적으로 deprecated 된 방식 말고 새로운 방식은 bean을 중점적으로 등록하는 방식으로 진행됩니다. 그렇기 때문에 어떤 bean을 수정해야 하는지 spring security 를 좀 아셔야합니다.

kafka 업데이트 강의 듣고 시포요

0

91

2

강의 교안

0

79

2

마이크로서비스간 통신 시, 인증 처리

0

87

2

api gateway 에서 인증 처리

0

66

1

섹션 19 질문드립니다

0

60

2

강의 자료 업데이트

0

87

2

부하분산 강의 섹션

0

59

1

강의자료는 어디에서?

0

77

2

강의 자료는 어디서 다운 받을 수 있나요?

0

114

2

전체 사용자 조회시 오류

0

60

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

113

2

학습 방향

0

96

2

카프카 커넥터 사용 목적 문의

0

87

2

kafka 강의

0

109

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

119

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

91

2

Kafka Source Connect 버전 에러

0

90

2

소스커넥터는 사용안한 거 맞죠?

0

82

2

강의자료 업데이트 문의

0

97

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

59

1

강의 업데이트 계획이 궁금합니다.

0

114

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

163

2

어떤 것이 업데이트 된 건가요?

0

167

2