inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

SpringSecurity JWT 로그인 URL 2개 설정하는 방법

487

이경도

작성한 질문수 1

0

안녕하세요

 

SpringSecurity를 이용해서 유저 , 관리자 로그인의 대한 로직을 따로 두고싶습니다.

SecurityFilter내에서

유저 로그인 URL과 로직을

관리자 로그인 URL과 로직을

어떻게 나눌 수 있을까욤 ㅠㅠ?

spring spring-security jwt

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

스프링 시큐리티(Spring Security)를 사용하여 다른 권한을 가진 유저와 관리자 로그인의 로직을 나누려면, 별도의 SecurityFilterChain을 정의하여 구분할 수 있습니다. 각각의 로그인 URL과 로직에 맞게 HttpSecurity 객체를 설정하여 처리합니다. 예를 들어, configure(HttpSecurity http) 메소드 내에서 유저와 관리자에 대한 인증 절차를 분리하여 설정할 수 있습니다. 여기에 JWT 토큰 기반 인증을 추가하기 위해서는 JWT 토큰을 검증하고 인증하는 로직을 커스텀 필터로 추가하고, 해당 필터를 HttpSecurity의 필터 체인에 등록해야 합니다.

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain userFilterChain(HttpSecurity http) throws Exception {
        http
            .antMatcher("/user/**") // 유저 로그인 URL을 "/user/**"로 설정
            .authorizeRequests()
                .anyRequest().hasRole("USER")
            .and()
            .addFilterBefore(new JwtTokenFilter(), UsernamePasswordAuthenticationFilter.class)
            // JWT 토큰 필터 추가
            // 여기서 JwtTokenFilter는 JWT 토큰을 검증하는 커스텀 필터
            .formLogin()
                .loginProcessingUrl("/user/login"); // 유저 로그인 처리 URL
        
        return http.build();
    }

    @Bean
    public SecurityFilterChain adminFilterChain(HttpSecurity http) throws Exception {
        http
            .antMatcher("/admin/**") // 관리자 로그인 URL을 "/admin/**"로 설정
            .authorizeRequests()
                .anyRequest().hasRole("ADMIN")
            .and()
            .addFilterBefore(new JwtTokenFilter(), UsernamePasswordAuthenticationFilter.class)
            // 여기서 JwtTokenFilter는 JWT 토큰을 검증하는 커스텀 필터
            .formLogin()
                .loginProcessingUrl("/admin/login"); // 관리자 로그인 처리 URL

        return http.build();
    }

}

위 예시에서는 두 개의 SecurityFilterChain을 정의하여 각각 유저와 관리자의 로그인 로직을 구분하였습니다. antMatcher 메소드를 사용하여 각각의 로그인 URL 및 로직을 나누고 있으며, JwtTokenFilter라는 커스텀 필터를 이용하여 JWT 토큰 검증을 수행합니다. JwtTokenFilter의 구현은 여기서 별도로 제공되지 않았지만, 일반적으로 OncePerRequestFilter를 상속받아 구현합니다.

시큐리티 설정을 커스터마이징할 때는 스프링 시큐리티의 기본 웹 보안 설정을 덮어쓰기 때문에 기존의 설정이 필요없을 경우 명시적으로 비활성화해야 할 수도 있습니다. 자세한 정보는 스프링 공식 문서를 참조하세요.

단, 제공된 정보에는 JWT를 직접적으로 언급하는 부분이 없으므로, JWT와 관련된 로직은 스프링 시큐리티의 기본 구조를 이해하고 적용하는 방식으로 진행해야 합니다.

JWT를 구현한 다음 이 API를 호출해서 사용하는 것은 프론트엔드 쪽에서 하는 역할인가요?

0

96

1

Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?

0

401

1

13:23 system.out 출력문이 다르게 나옵니다.

0

130

1

수료증 문의

0

226

2

9분대에 질문이 있습니다 !

0

114

1

password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?

0

321

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

2024.06기준) 최근 SecurityConfig 설정 문의

0

921

3

구글 로그인시 authentication이 null 값이라고 에러가 발생합니다.

0

678

2

특정 url필터 거는 방법 이슈

0

422

1

강사님께서 말씀하시는 시큐리티세션이 SecurityContext인가요?

0

277

1

25강 마지막 테스트에서 오류

1

1044

2

jwt를 저장하는 위치에 궁금한 점이 있습니다.

0

298

1

mustache를 사용하지 않고 thymeleaf를 사용하려고 하는데

0

697

1

세션 인증방식이 REST 원칙에 위배되는 건가요?

0

340

1

jwt와 실제데이터의 관계

1

243

1

jwt 와 세션ID의 관계

1

313

1

SecurityConfig에서 세션 설정, 인가 설정

0

420

1

섹션2 9강까지 듣고 질문이 있습니다. 스프링부트 버전을 다운그레이드해도 될까요?

0

396

1