inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스프링부트 시큐리티 25강 - jwt를 위한 강제 로그인 진행

섹션 3. JWT 관련 기능 질문입니다.

366

Chiptune

작성한 질문수 1

0

안녕하세요, 강의 잘 보고 있습니다.

이번에 JWT 관련 기능을 구현함에 있어 참고차 보게되었는데요.

 

시큐리티가 인터페이스화가 많이 되어있다보니 동일한 기능임에도 구현하는 사람마다 어느 필터에서 인증/인가를 구현하는 지가 차이가 있는 것 같습니다.

 

섹션 3 버전2 소스 기준으로 JwtAuthorizationFilter 의 경우 BasicAuthenticationFilter를 확장하여 사용하고 JwtAuthenticationFilter의 경우 UsernamePasswordAuthenticationFilter 를 확장하여 사용하고, 필터에 등록되어 있습니다.

 

위 2가지 필터는 공식 문서 참고에 의하면

BasicAuthenticationFilter 는 HTTP 헤더에서 토큰을 추출하여 간단히 인증을 하는 용도로, UsernamePasswordAuthenticationFilter는 폼 기반의 로그인을 처리한다고 나와 있습니다.

 

만약 그렇다면, 폼 로그인 없이 JWT 토큰 만으로는 BasicAuthenticationFilter를 확장하는 JwtAuthorizationFilter만 존재해도 인증 과정 상 크게 문제는 없어보이는데요.
(권한 체크는 별도로 할거라 인증 과정에 넣지 않으려고 합니다.)

어떤 분은 토큰 체크하는 부분을 GenericFilterBean 또는 OncePerRequestFilter 로 구현하시는 분들도 존재하더라구요.

단순히 로그인 컨트롤러에서 JWT 토큰을 발급하고 이후 요청 필터에서 토큰 체크 및 리프레시 토큰 체크 등의 인증 처리를 한다면 어떤 필터를 구현하여 등록하는 걸 추천하시는지 개인적으로 궁금합니다.

감사합니다.

spring spring-security jwt

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
Chiptune님, 질문 주셔서 감사합니다.

JWT 토큰 기반의 인증 시스템에서는 BasicAuthenticationFilter를 사용하지 않고 인증을 처리하는 경우가 많습니다. JWT 토큰을 사용할 때는 일반적으로 폼 로그인 없이 OncePerRequestFilter를 상속받는 커스텀 필터를 만들어서 인증 처리를 합니다.

OncePerRequestFilter는 요청당 한 번씩만 실행되는 필터로, 요청 헤더에서 JWT 토큰을 추출하고 유효성을 검사하는 과정을 이 필터에서 구현하곤 합니다. 인증이 성공하면 SecurityContext에 인증 정보를 저장하여 다음 필터나 컨트롤러에서 사용할 수 있도록 합니다.

JWT 토큰 발급은 별도의 인증 엔드포인트(로그인 컨트롤러 등)에서 처리하고, 필터는 그 이후의 요청에서 토큰의 유효성을 검증하는 데 초점을 맞춥니다. 권한 체크는 @PreAuthorize 어노테이션 등을 사용하여 메서드 단위로 세밀하게 관리할 수 있습니다.

따라서 로그인 시 JWT 토큰을 발급하고 이후 요청에서 토큰 유효성 체크와 리프레시 토큰을 검증하는 작업을 할 때는 OncePerRequestFilter를 확장하여 사용하는 것이 일반적인 방법인 것을 추천드립니다.

감사합니다.

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

0

98

1

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

0

401

1

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

0

130

1

수료증 문의

0

227

2

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

0

115

1

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

0

321

1

이전 강의 참고하라는 말씀

0

253

1

강의 실습하다가 막히는 분들 참고(2024년8월 기준)

2

1116

2

구글 소셜 로그인 302

0

201

1

오류 문의 _ org.springframework.orm.jpa.JpaSystemException: could not deserialize

1

584

1

[자바] 시큐리티 Config 참고

13

953

1

이론강의

0

280

1

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

0

488

1

2024.06기준) 최근 SecurityConfig 설정 문의

0

922

3

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

0

678

2

특정 url필터 거는 방법 이슈

0

422

1

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

0

279

1

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

1

1044

2

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

0

298

1

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

0

697

1

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

0

342

1

jwt와 실제데이터의 관계

1

244

1

jwt 와 세션ID의 관계

1

313

1

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

0

422

1