인프런 커뮤니티 질문&답변

응애자바님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

RestAuthenticationFilter에 jwt 토큰을 추가하는 질문

작성

·

184

·

수정됨

0

안녕하세요 선생님 현재 실전 프로젝트 20 restDsl까지 적용하여 저의 개인 프로젝트를 진행 중에 있습니다
세션 방식은 문제없이 동작을 하지만 토큰으로 변경을 하고자 하니 문제가 생겼습니다

질문

1. 기존 RestAuthenticationFilter을 그대로 사용하고 RestAuthenticationSuccessHandler에서 인증이 완료가 되면 토큰을 발급하여 헤더로 보내주는 것이 가능할가요?

  1. 1 방식이 가능하다면 정상 발급된 토큰을 확인하는 필터를 RestAuthenticationFilter 앞에 추가하도록 하여 인증을 유지하고 싶습니다

  2. 또한 실제 인증 처리는 Provider 쪽에서 진행이 된다고 강의에서 배웠는데 JwtAuthenticationProvider라는 클래스를 따로 하나 만들어 또 하나의 restFilter를 생성하여 @Order로 우선순위를 주고 새로이 인증을 처리하는 방식이 맞을까요?

이상이 제가 질문 드리고 싶은 부분들 입니다. 혹시 틀린 점이나 추가해야 하는 점이 있다면 조언 부탁 드립니다..

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

  1. 네 응답에 헤더를 추가한다면 가능합니다.

  2. 토큰을 검증하는 별도의 필터를 만들어서 처리하면 됩니다.

  3. 네 그렇게 진행하면 될 것 같습니다.

보통 토큰 방식의 인증처리는 jwt 를 많이 사용하고 대부분의 코드 흐름이 비슷합니다.

  1. 로그인 인증이 성공하면 jwt 토큰을 발급하고 응답헤더나 문자열로 보낸다

  2. 요청시 jwt 토큰을 헤더에 싣거나 요청 파라미터로 보낸다

  3. 서버의 검증 필터에서 jwt 토큰을 검증한다

  4. 2, 3 번을 반복하고 토큰 만료 시 1 번부터 다시 시작하거나 refresh token 을 활용해서 토큰을 재발급한다

0

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

제공된 정보에는 스프링 시큐리티와 토큰을 추가하는 구체적인 방법에 대한 내용이 없습니다. 그러나 스프링 시큐리티를 사용하여 JWT 토큰 기반 인증을 구현하는 것은 일반적인 방법 중 하나입니다. 응애자바님의 질문에 대해 구체적인 답변을 드리진 못하지만, 일반적으로 고려할 수 있는 점은 다음과 같습니다:

  1. RestAuthenticationFilter를 사용하여 인증 후 RestAuthenticationSuccessHandler를 통해 JWT 토큰을 발급하고 헤더에 추가하는 방식은 가능합니다. 이를 통해 성공적으로 인증된 사용자에게 토큰을 전달할 수 있습니다.

  2. 발급된 토큰을 확인하기 위해 RestAuthenticationFilter 앞에 커스텀 필터를 추가하는 것 역시 유효한 접근 방식입니다. 이 커스텀 필터에서는 요청 헤더에 포함된 토큰을 검증하여 인증 처리를 할 수 있습니다.

  3. 인증 처리의 구현체로 JwtAuthenticationProvider를 별도로 생성하여 사용하는 것은 적절한 방법입니다. 이 클래스에서 실질적인 토큰 검증 로직을 구현할 수 있으며, @Order 어노테이션을 사용해 필터 체인 내에서의 순서를 지정할 수 있습니다.

위 내용은 일반적인 JWT 토큰 기반 인증 구현 방법에 대한 개요입니다. 구체적인 실행과 관련하여 추가적인 도움이 필요하시면, 스프링 시큐리티 공식 문서나 스택오버플로우 같은 커뮤니티에서 더 많은 정보와 예시를 찾아보실 수 있을 것입니다. 프로젝트 성공을 기원합니다!