inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링부트 시큐리티 & JWT 강의

섹션0~섹션1 최신버전 업데이트 github 주소

2024.06기준) 최근 SecurityConfig 설정 문의

921

seohyeonjin787

작성한 질문수 7

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

github에 올려주신 version2, 3 둘 다

빨간줄뜨고 6.1 이후로 deprecated 되었다고 나오는데

설정 어떻게 해야 할까요? ㅜㅜ

 

스프링부트 시큐리티2강 - 시큐리티 설정 듣고있습니다.

spring spring-security jwt

답변 3

1

최주호

이 부분은 제가 강의를 업데이트 해야될것 같아요!!

0

seohyeonjin787

감사합니다. 앞서 코드올려주신분들 + gpt의 도움을 받아 어찌어찌 돌아가게는 했습니다 ㅎㅎ

0

아름

혹시 어떤 식으로 코드 변경하셨는지 알 수 있을까요? 저는 이것저것 바꿔봤는데

java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.security.servlet.SpringBootWebSecurityConfiguration$SecurityFilterChainConfiguration



이 에러가 나서요 관련해서 pom.xml 설정도 했는데 에러가 안 없어지네요

0

seohyeonjin787

죄송해요 제가 너무 늦게 봤죠,,

제가 등록했던 코드 올려드릴게요

 

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 인턴

안녕하세요, 인프런 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