Spring/시큐리티

Access 토큰 필터(JWTfIlter)

_Jin_ 2024. 6. 23.

로그인에 따른 JWT 발급과 서비스 사용에 따른 토큰 사용의 흐름을 이해하자면 위와 같다. 클라이언트의 로그인 요청에 따라서 서버는 JWT를 발급하고 이후 지급된 Access 토큰을 가지고 서비스를 사용할 때마다 서버에 토큰을 던지는데 서버는 JWTFilter를 통해 이를 검증한다. ( 만료 및 위조나 권한 등 )

 

따라서 JWTFilter를 구현한 코드를 보자

 

OncePerRequestFilter를 상속받은 후에 doFilterInternal에서

 

클라이언트로 받은 request를 처리한다. 먼저 앞서 서버에서 “access”로 헤더에 담아 토큰을 발급했다. 따라서 토큰의 헤더에 “access”로 담긴 토큰을 가져오고 이것이 존재하는 지, 만료되었는지 확인하는 것이다.

 

여기서 중요한 점은 해당 로직에서 (다음 필터로 넘기지 않는 것)이다.

이와 같은 검증을 위한 로직을 거친 후에는

토큰에 담긴 회원의 정보( 유저의 이름/ 권한 )을 엔티티에 담고 UserDetails에 담고 이후

UsernamePasswordAuthenticationToken에 담는다.

 

그리고 ContextHolder에 담아 다음 필터로 넘긴다.

마지막으로 Config에서 해당 필터의 위치를 설정한다. ( loginFilter 이전 )

'Spring > 시큐리티' 카테고리의 다른 글

Refresh 토큰 서버측 저장  (0) 2024.06.23
Refresh 토큰 Rotate  (0) 2024.06.23
Refresh 토큰으로 Access 토큰 재발급  (0) 2024.06.23
다중 토큰 발급(refresh/access)  (0) 2024.06.23
보안을 위한 JWT  (0) 2024.06.23

댓글