2024.06기준) 최근 SecurityConfig 설정 문의
921
작성한 질문수 7
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
github에 올려주신 version2, 3 둘 다
빨간줄뜨고 6.1 이후로 deprecated 되었다고 나오는데
설정 어떻게 해야 할까요? ㅜㅜ
스프링부트 시큐리티2강 - 시큐리티 설정 듣고있습니다.
답변 3
1
이 부분은 제가 강의를 업데이트 해야될것 같아요!!
0
혹시 어떤 식으로 코드 변경하셨는지 알 수 있을까요? 저는 이것저것 바꿔봤는데
java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.security.servlet.SpringBootWebSecurityConfiguration$SecurityFilterChainConfiguration
이 에러가 나서요 관련해서 pom.xml 설정도 했는데 에러가 안 없어지네요
0
죄송해요 제가 너무 늦게 봤죠,,
제가 등록했던 코드 올려드릴게요
package myproject.web.config;
import lombok.RequiredArgsConstructor;
import myproject.web.config.oauth.PrincipalOauth2UserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.web.SecurityFilterChain;
//1.코드받기(인증) 2. 엑세스토큰(권한)
//3. 사용자프로필 정보를 가져오고 4-1. 그 정보를 토대로 회원가입을 자동으로 진행시키기도 함.
//4-2. (이메일, 전화번호, 이름, 아이디) ... 쇼핑몰 -> (집주소), 백화점몰 -> (vip등급, 일반등급) 추가적인 회원가입창이 나오게.
//하지만, 이메일, 전화번호, 이름, 아이디만 필요하다면 이 정보만 가지고 회원가입을 자동으로 시킴.
@Configuration
@EnableWebSecurity //스프링 시큐리티 필터(SecurityConfig)가 스프링 필터체인에 등록이 됩니다.
@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true) //@Secured 어노테이션 활성화. 컨트롤러 메서드에 @Secured("Role_admin") 이런 식으로. 두번째는 PreAuthorize 어노테이션 활성화. @PreAuthorize("hasRole("ROLE_User")") 이런식으로. 얘는 메서드 실행되기 직전에 실행됨. 여러 개의 권한설정 가능. @PostAuthorize도 있음. 메서드가 종료되고 나서 실행인데 @Pre가 @Post도 포함. @Post만 쓸일은 잘 없음.
@RequiredArgsConstructor
public class SecurityConfig {
private final PrincipalOauth2UserService principalOauth2UserService;
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
//SpringSecurity 6.1 이후로 람다식 설정으로 바뀜.
http.csrf(AbstractHttpConfigurer::disable); //csrf 불필요
http.authorizeHttpRequests(authorize -> authorize.requestMatchers("/myPage/**").authenticated() //인증만 되면 들어갈 수 있는 주소
//ADMIN으로 들어오게 되면 ADMIN 권한이 있어야함.
.requestMatchers("/admin/**").hasRole("ADMIN")
//다른 주소로는 다 권한이 허용
.anyRequest().permitAll())
//권한이 필요한 경우 로그인 페이지로 이동함., //로그인 주소가 호출이 되면 스프링 시큐리티가 낚아채서 로그인 진행, 컨트롤러에 /login이 없어도 가능
.formLogin(formLogin -> formLogin.loginPage("/loginForm").permitAll()
.loginProcessingUrl("/login") // 로그인 폼의 action 경로를 "/login"으로 설정
.defaultSuccessUrl("/logged"))// 로그인 성공 시 기본적으로 리디렉션되는 URL을 "/"로 설정
//oauth로그인페이지나 일반 로그인페이지나 똑같이 설정
.oauth2Login(oauth2Login -> oauth2Login.loginPage("/loginForm") //구글 로그인이 완료된 뒤의 후처리가 필요함
// Tip.코드X,(엑세스토큰+사용자프로필정보O) 한 방에 받음. //userService의 타입은 OAuth2UserService? loadUser라는 함수에서 후처리가 됨.
.userInfoEndpoint(userInfoEndpoint -> userInfoEndpoint.userService(principalOauth2UserService)));
return http.build();
}
}
0
안녕하세요, 인프런 AI 인턴입니다.
seohyeonjin787님, Spring Boot Security 설정에 있어서 deprecated된 부분에 대한 질문이시네요. SecurityFilterChain을 사용하여 보안 구성을 정의하는 방식은 Spring Boot 2.0부터 권장되는 방식입니다. 구체적으로, @Configuration 어노테이션을 사용하여 클래스를 정의하고, 내부에서 SecurityFilterChain 빈을 반환하는 메서드를 구현함으로써 기본적인 웹 애플리케이션 보안 설정을 사용자 정의할 수 있습니다.
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
// 여기에 보안 설정을 세부적으로 추가합니다.
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
return http.build();
}
}
이런 방식으로 새로운 Spring Security 설정을 적용할 수 있습니다. deprecated된 클래스나 메서드 대신 SecurityFilterChain을 통해 보안 설정을 진행해 주세요.
더 자세한 정보가 필요하다면, Spring Boot Reference Documentation을 참고하는 것도 좋습니다.
- Spring Security와 관련된 더 자세한 정보는 Spring Security project page를 참조하세요.
- Spring Boot에서 기본 보안 설정을 해제하는 방법에 대해서는 여기에서 확인할 수 있습니다.
위의 방법들을 통해 최신 버전에서 발생하는 deprecated 문제를 해결할 수 있을 것입니다. 개발에 성공하시길 바랍니다!
JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?
0
94
1
Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?
0
401
1
13:23 system.out 출력문이 다르게 나옵니다.
0
130
1
수료증 문의
0
226
2
9분대에 질문이 있습니다 !
0
114
1
password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?
0
320
1
이전 강의 참고하라는 말씀
0
253
1
강의 실습하다가 막히는 분들 참고(2024년8월 기준)
2
1116
2
구글 소셜 로그인 302
0
200
1
오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize
1
584
1
[자바] 시큐리티 Config 참고
13
953
1
이론강의
0
280
1
SpringSecurity JWT 로그인 URL 2개 설정하는 방법
0
487
1
구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.
0
677
2
특정 url필터 거는 방법 이슈
0
422
1
강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?
0
277
1
25강 마지막 테스트에서 오류
1
1044
2
jwt를 저장하는 위치에 궁금한 점이 있습니다.
0
298
1
mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데
0
696
1
세션 인증방식이 REST 원칙에 위배되는 건가요?
0
338
1
jwt와 실제데이터의 관계
1
242
1
jwt 와 세션ID의 관계
1
312
1
SecurityConfig에서 세션 설정, 인가 설정
0
417
1
섹션2 9강까지 듣고 질문이 있습니다. 스프링부트 버전을 다운그레이드해도 될까요?
0
394
1





