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

류혜상님의 프로필 이미지

작성한 질문수

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

Rest 인증 필터 구현 - RestAuthenticationFilter

실전강의 Rest방식 vs formLogin 방식에따른 Rest Fillter 적용여부

24.06.06 20:56 작성

·

270

0

안녕하세요 강사님,

실정강의 중에 궁금한 사항이 있어 질문드립니다.

 

FromLogin방식에서는 CustomFilter를 따로 생성하지 않고

Ajax 비동기 로그인 방식에서만 CustumFilter를 생성하여 http.addFilter 로 필터를 추가하신 내용을 수강중입니다.

 

궁금산사항은 FormLogin 방식에서는 왜 필터를 추가를 안하고 비동기 통신 로그인 일때만 필터를 추가하는지 그 이유가 궁금하여 질문드립니다.

답변 2

0

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

2024. 06. 12. 19:35

아 네

그건 비동기 인증은 스프링 시큐리티에서 제공하지 않기 때문에 별도의 필터와 관련 클래스들을 만들어서 어떻게 처리가 되는지를 설명하기 위함입니다.

그리고 스프링 시큐리티에서 제공하는 UsernamePasswordAuthenticationFilter 는 이미 동기식 인증처리를 위해 사용되고 있기 때문에 비동기 인증을 위한 별도의 필터가 필요한 것입니다.

강의에서 동기식 인증과 비동기식 인증을 소개하기 위해 서로 다른 필터를 사용하기 위함이라 보시면 됩니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 06. 21:01

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

류혜상님의 질문에 대해 답변 드리겠습니다. 질문하신 내용은 FormLogin 방식과 Ajax 비동기 로그인 방식에서의 필터 사용 차이에 대한 것입니다.

FormLogin 방식에서 사용자가 직접 로그인 처리 필터를 추가하지 않는 이유는, Spring Security가 제공하는 Form Login 인증 처리가 기본적으로 기본 메커니즘을 이미 포함하고 있기 때문입니다. 즉, Spring Security의 formLogin() 설정을 사용할 경우, Spring Security는 UsernamePasswordAuthenticationFilter를 자동으로 등록하여 사용자 인증을 처리합니다. 이 필터는 사용자가 폼을 통해 전송한 username과 password를 가져와서 인증 과정을 진행합니다.

반면, Ajax 비동기 방식을 사용할 경우, 일반적인 폼 서브밋과 다르게 추가적인 로직이 필요합니다. 예를 들어, JSON 형태로 데이터가 전송될 수 있고, 클라이언트 측에서 비동기적인 방식으로 서버에 인증을 요청할 수 있습니다. 이 경우 기본적으로 제공되는 필터로는 충분히 처리할 수 없기 때문에, 사용자가 커스텀 필터를 정의하여 인증 처리 과정을 직접 구현해야 합니다. 이 커스텀 필터에서는 일반적으로 UsernamePasswordAuthenticationFilter를 상속 받거나, AbstractAuthenticationProcessingFilter를 이용하여 비동기 방식의 요청을 처리할 수 있는 로직을 작성합니다.

관련된 설명은 다음 게시글에서도 확인하실 수 있습니다:
- 강사님 질문이 있습니다.에서는 Ajax 방식으로 인증기능을 구현하기 위해서 기존의 필터로는 구현이 어렵기 때문에 별도로 만들어서 사용해야 한다고 설명하고 있습니다. 이는 FormLogin이 아닌 방식으로 인증 처리를 하려면 새로운 필터를 구성해야 하는 상황을 설명하고 있습니다.

이와 같이 FormLogin 방식과 비동기 통신(Ajax) 로그인 방식의 차이는, Spring Security 내부에서 제공하는 기본 처리 방식과 사용자가 직접 필터를 구성해야 하는 경우의 차이로 이해할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.