• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

FilterSecurityInterceptor의 인증예외에 관해서

22.06.04 19:18 작성 조회수 162

0

FilterSecurityInterceptor가

인증예외를 터트릴때

 

1.익명사용자일때

2.rememberme 인증 사용자일때

 

라고 말씀해주셧는데요.

1번은 당연히 인증되지않는 사용자이므로

이해가됩니다.

 

2.rememberme사용자는 어쨋든

sc에 인증객체까지 담아서 인증이 완료된것인데

왜 인증예외를 터트리는것인가요?

-->제 생각으로 는

예를들어 관리자계정같은경우는 rememberme로

다시 자동로그인이 된다면 관리자권한이 필요한

관리자페이지의경우에는 중요한페이지이므로

일부러 다시로그인 해달라고 하기위해서 설정해놓은 장치인가요? 

답변 1

답변을 작성해보세요.

2

스프링 시큐리티에서 Remember Me 인증은 fully authenticated 즉 완전한 인증을 뜻하지는 않습니다.

완전한 인증이라 함은 로그인 행위에 있어 아이디와 패스워드와 같은 신원증명을 할 수 있는 것을 의미합니다.

만약 설정에서 인증조건을 Authenticated 가 아닌 Fully Authenticated 라고 했을 경우에는 인증예외가 발생하게 됩니다.

또는 Remember Me 의 토큰이 만료가 되었을 경우에도 인증예외가 발생합니다.

Remember Me 는 특수한 토큰을 발급하여 사용자가 신원증명을 하지 않더라도 토큰이 만료되지 않으면 토큰만으로도 인증처리가 되기 때문에 만약 인증 예외가 발생했는데 그것이 Remember Me 인증일 경우 일단 모든 토큰을 무효화 시켜서 자동 로그인이 되지 않도록 차단하고 다시 새롭게 신원증명할 수 있도록 해야 하기 때문에 ExceptionTranslationFilter 에서 인증예외 처리를 하고 있습니다.

질문에서 Remember Me  인증예외가 발생한 원인이 무엇인지 잘 모르겠으나 Remember Me 은 Fully Authenticated 가 아님을 기억하시기 바랍니다.

avenue님의 프로필

avenue

2022.09.06

저 혹시 만약에 /user라는 자원상에서 fullyAuthenticated()가 아닌 그냥 authenticated()라고 하면 RememberMe인증이라고 하더라도 인증 예외가 발생하지 않는것이 맞는건가요??