섹션 3. JWT 관련 기능 질문입니다.
366
작성한 질문수 1
안녕하세요, 강의 잘 보고 있습니다.
이번에 JWT 관련 기능을 구현함에 있어 참고차 보게되었는데요.
시큐리티가 인터페이스화가 많이 되어있다보니 동일한 기능임에도 구현하는 사람마다 어느 필터에서 인증/인가를 구현하는 지가 차이가 있는 것 같습니다.
섹션 3 버전2 소스 기준으로 JwtAuthorizationFilter 의 경우 BasicAuthenticationFilter를 확장하여 사용하고 JwtAuthenticationFilter의 경우 UsernamePasswordAuthenticationFilter 를 확장하여 사용하고, 필터에 등록되어 있습니다.
위 2가지 필터는 공식 문서 참고에 의하면
BasicAuthenticationFilter 는 HTTP 헤더에서 토큰을 추출하여 간단히 인증을 하는 용도로, UsernamePasswordAuthenticationFilter는 폼 기반의 로그인을 처리한다고 나와 있습니다.
만약 그렇다면, 폼 로그인 없이 JWT 토큰 만으로는 BasicAuthenticationFilter를 확장하는 JwtAuthorizationFilter만 존재해도 인증 과정 상 크게 문제는 없어보이는데요.
(권한 체크는 별도로 할거라 인증 과정에 넣지 않으려고 합니다.)
어떤 분은 토큰 체크하는 부분을 GenericFilterBean 또는 OncePerRequestFilter 로 구현하시는 분들도 존재하더라구요.
단순히 로그인 컨트롤러에서 JWT 토큰을 발급하고 이후 요청 필터에서 토큰 체크 및 리프레시 토큰 체크 등의 인증 처리를 한다면 어떤 필터를 구현하여 등록하는 걸 추천하시는지 개인적으로 궁금합니다.
감사합니다.
답변 1
0
안녕하세요, 인프런 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





