인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

창신동 장첸님의 프로필 이미지
창신동 장첸

작성한 질문수

스프링 시큐리티

WebIgnore설정 오류 질문

작성

·

249

0

    @Override
    public void configure(WebSecurity web) throws Exception {
        //정적 리소스가 보안설정검사 없이
        web
                .ignoring()
                .requestMatchers(PathRequest.toStaticResources().atCommonLocations())
        ;
    }

위 코드는 강의에서 설정한 webIgnore 설정입니다. 이 설정 후 로그인을 성공시킨 후 보여지는 화면은 아래와 같습니다.

캡처.PNG해상도가 좋지 않아 아래에 표기했습니다.

{"timestamp":"2022-11-15T08:08:46.990+0000","status":999,"error":"None","message":"No message available"}

검색을 해보니 webIgnore설정에

.antMatchers("/favicon.ico", "/resources/**", "/error") 를 추가하라고 하여 조치를 했더니

    @Override
    public void configure(WebSecurity web) throws Exception {
        //정적 리소스가 보안설정검사 없이
        web
                .ignoring()
                .requestMatchers(PathRequest.toStaticResources().atCommonLocations())
                .antMatchers("/favicon.ico", "/resources/**", "/error")
        ;
    }

위 문제화면 없이 로그인성공 후 메인화면으로 잘 리다이렉트 되는 것을 확인했습니다.

위 문제화면 특징 :

  1. 최초 웹어플리케이션 구동 후 로그인 성공시 999에러가 발견됨

  2. 로그인이 안된 것은 아님. 999에러 화면에서 주소창에 localhost:8080/ 으로 직접 접속해보면 top위치에 로그인 버튼이 로그아웃 버튼으로 변경됨

강의에서 알려주신 코드외에 위 경우처럼 추가적인 조치가 필요한지 궁금합니다.

문제가 발생하는 시점의 소스코드를 깃헙에 올렸습니다.

답변 1

1

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

최초 웹어플리케이션 구동 후 로그인 성공시 999 에러가 발견되는 부분은 다음과 같은 상황으로 이해하면 될 것 같습니다

  1. 로그인이 안된 상황에서 어떤 정적파일 혹은 시큐리티에서 필터링 되지 못한 일부 자원이 요청에 포함되어 접근할려고 할 때 해당 파일에 대한 인가 예외가 발생해서 /error 가 발생함

  2. 다시 로그인 페이지로 이동한 다음 정상적으로 로그인이 성공하긴 했는데 로그인이 성공하게 되면 로그인 이전의 경로가 캐시로 저장된 상태 즉 /error 경로로 다시 리다이렉트하기 때문에 로그인이 성공하더라도 /error 로 가게 됨

  3. 여기서 /error 자체도 접근 권한을 체크하기 때문에 아예 시큐리티가 필터링하지 못하도록 정적 파일에 포함해서 선언함


다만 위의 설명이 모든 상황에서의 경우는 아닐 수 있습니다.

그래서 위의 코드처럼 정적파일을 선언해 주시면 될 것 같습니다.

 

답변 감사합니다!

창신동 장첸님의 프로필 이미지
창신동 장첸

작성한 질문수

질문하기