• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Anonymous 유저도 Authentication 객체가 있는데 AuthenticationException이 발생할 수 있나요?

22.04.30 03:05 작성 조회수 188

1

안녕하세요 강의 감사히 잘 보고 있습니다. SpringSecurity를 자세히 설명해주는 강의가 이만한게 없네요 ㅎㅎ

다름이 아니라 FilterSecurityInterceptor 에서 Authentication 객체가 null인 경우 AuthenticationExceptin이 발생한다고 해서 궁금한점이 생겼습니다.

Anomumous 유저도 Authentication 객체가 생긴다면 결국 SpringSecurity에서는 Authentication 객체가 null 경우는 존재하지 않게 되는 것 아닌가 해서요. 어떻게 AuthenticationException이 발생할 수 있나요?

답변 1

답변을 작성해보세요.

1

실제로 Authentication 이 null 이 되는 경우는 정상적인 상황에서는 거의 발생하지 않습니다.

다만 스프링 시큐리티는 어떤 상황에서 Authentication  이 발생하는지에 대한 관심보다는 이유가 어떠하든 Authentication 이 null 이 되는 상황이 발생하면 정상적인 흐름이 아니라고 판단한다는데 더 관심을 두고 있다고 생각하시면 될 것 같습니다.

말씀하신 것처럼 Authentication 이 null 이 되는 상황은 누군가가 의도적으로 그렇게 만들고 싶어도 될 수 있는 경우의 수가 잘 떠오르지 않을 만큼 잘 설계가 되어 있지만 혹 어떤 특수한 상황이나 누군가에 의해 그렇게 되는 경우가 발생한다고 하더라도 이유를 막론하고 예외를 발생시켜서 인증이나 인가흐름을 중지시키겠다는 의도로 보시면 될 것 같습니다.

결론적으로 Authentication 이 null 이 되는 이유가 중요하기 보다는 어떤 이유에서는 그런 상황이 발생하면 더 이상 인증/인가 처리를 하지 않겠다는 원칙에 따라 설계했다고 보시면 될 것 같습니다.

다만 한가지 기억할 점은 만약 시스템의 보안 정책에 의해 Anomumous 다음의 필터에서 Authentication 이 null 이 되는 필터를 추가해야 하는 상황이 발생하거나 SecurityContext 에 저장한 Authentication 을 null 로 대체할 수 있다는 점인데 이런 구현 자체를 허락하지 않겠다는 의미도 담겨져 있다고 볼 수 있습니다.

 

 

감사합니다. 덕분에 많이 배우고 갑니다 :)