강의

멘토링

커뮤니티

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

고구마의고구마님의 프로필 이미지
고구마의고구마

작성한 질문수

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

인증 관리자 - AuthenticationManager - 2

로그인 후 리다이렉트

작성

·

193

0

image.png

인증제공자 2에서 커스텀한 필터 적용하고 마지막으로 서버 가동후에 테스트 하는데 해당 화면이 뜹니다.

주소창에 localhost:8080 입력후 접근하면 제대로 뜨는 것을 보면 리다이렉트 문제라고 생각되는데

쿼리스트링으로 인증 후에 다시 루트로 리다이렉트를 어떻게 해야 하나요?

다 옮겨 적은 거 같은데 혹시 제가 놓친 설명이나 코드가 있다면 죄송합니다.

 

 

답변 2

0

코드를 그대로 하셨다면

/api/login 경로로 요청을 하면 쿼리 스트링에 값이 없어도
CustomAuthenticationFilter는 토큰을 받게됩니다
CustomAuthenticationProvider가 무조건 UsernamePasswordAuthethenticationToken을 반환하기 때문

->

CustomAuthenticationFilter 상위 클래스인
AbstractAuthenticationFilter에서는 CustomProvider에서 넘겨준 Authentication 객체를 받았기 때문에
successfulAuthentication메소드가 동작하고

->

SavedRequestAwareAuthenticationSuccessHandler
에서는 SavedRequest 객체가 없어서
SavedRequestAwareAuthenticationSuccessHandler
상위 클래스인 SimpleUrlAuthenticationSuccessHandler
호출

->

최종적으로
AbstractAuthenticationTargetUrlRequestHandler
에서 sendRedirect 합니다

그럼 / 경로로 정상적으로 리다이렉트 됩니다

정리하면 별도의 설정이 없으면
SavedRequestAwareAuthenticationSuccessHandler가 만들어지는데 여기서 / 경로로 리다이렉트 합니다



0

안녕하세요, 인프런 AI 인턴입니다. 고구마의고구마님.

로그인 후 인증 과정에서 발생하는 ‘Whitelabel Error Page’는 대개 리다이렉트 설정이나 인증 흐름에서 발생할 수 있습니다. 이와 관련하여 유사한 문제가 아래 링크에 잘 설명되어 있어서 도움이 될 수 있습니다.

  1. 루트에서 로그인 성공후 에러 메시지가 보입니다.:

    • 해당 에러는 종종 Spring Security 설정 중, 인증이 되지 않은 상태에서 특정 경로로의 접근이 인가되지 않아 발생할 수 있습니다. WebSecurityCustomizer에서 /error 페이지를 정적 리소스로 설정하여 시큐리티 필터를 통과하지 않도록 하는 것이 해결책의 하나로 제시되었습니다. 아래 코드도 참고해보세요:
      
      @Bean
      public WebSecurityCustomizer webSecurityCustomizer() {
       return (web) -> web.ignoring()
           .requestMatchers(PathRequest.toStaticResources().atCommonLocations())
           .antMatchers("/favicon.ico", "/resources/**", "/error");
      }
      

  2. WebIgnore설정 오류 질문:

    • 이 질문에서는 /error 경로에 대해 permALL 설정을 추가하여 문제를 해결하였습니다. 이는 Spring Security 설정에서 필요한 경우 특정 경로를 필터링하지 않도록 하는 방법 중 하나입니다.

에러 페이지가 나타나는 근본적인 원인은 로그인 성공 후 리다이렉션 경로가 잘못 설정되어 발생할 수 있습니다. 예를 들어, defaultSuccessUrl 설정이 존재하지 않거나 잘못된 경우입니다. 아래와 같은 설정을 확인해보세요:

  • http.formLogin().defaultSuccessUrl("/yourHomePage", true);

로그인 성공 후의 기본 리다이렉션 URL을 명시적으로 설정해주시면, 인증 후 정확한 경로로 이동이 가능합니다.

이외에도 다른 경로로의 접근 역시 권한 설정을 통해 시큐리티 필터를 우회할 수 있도록 설정해주시면 좋습니다.

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

고구마의고구마님의 프로필 이미지
고구마의고구마

작성한 질문수

질문하기