본문 바로가기
Spring/Spring Security

[Spring Security] Spring Security 부가기능

by yoon_seon 2023. 10. 29.

📌 필터 비활성화

http.<필터>.disable(); 과 같이 특정 필터가 동작하지 않도록 비활성화 처리 할 수 있다.

 

📌 로그인 & 로그아웃 페이지 관련 기능

폼 로그인의 로그인 페이지를 지정하고 로그인에 성공했을 때 이동하는URL을 지정한다.

로그인 페이지는 권한에 상관없이 접근 가능하도록 열어둔다.

만약 로그인 페이지를 지정하지 않는다면 Spring Security가 기본으로 제공하는 로그인 화면이 제공된다.

 

로그아웃 URL을 지정할 수 있고 로그아웃에 성공했을 때 이동하는 URL도 지정할 수 있다.

 

📌 Url Macher 관련 기능

  • antMatcher
    • "/", "/home", "/signup" 요청을 모두에게 허용한다.

  • mvcMatchers
    • "/signup", "/signup/", "/signup.html" 와 같은 유사 signup 요청을 모두에게 허용한다.

  • regexMatchers : 정규식으로 매칭한다.
  • requestMatchers : antMatcher, mvcMatchers, regexMatchers는 결국 requestMatchers로 이루어져 있다. 명확하게 요청 대상을 지정하는 경우에는 requestMatchers를 사용한다.

 

 

📌 인가 관련 설정

  • authorizeRequests() : 인가를 설정한다.

  • permitAll() : 지정된 Url의 요청을 모두에게 허용한다.(로그인을 하지 않은 사용자, 익명 유저 포함)

  • hasRole() : 권한을 검증한다. ('ROLE_'는 기본 prefix이기 때문에 빼고 작성해도 된다.)

  • authenticated() : 인증이 되었는지 검증한다 없으면 접근 안된다. anyRequest()가 있으면 그 외에 인증이 필요하다 라는 뜻.

 

📌 Ignoring

특정 리소스에 대해서 SpringSecurity 자체를 적용하고 싶지 않을 때가 있다.

예를들면 css나 png파일과 같은 정적 리소스는 굳이 인증 없이 외부에 공개되어 있다. 이럴때는 ignoring을 사용하면 된다.

그런데 permitAll (첫 번째 코드)과 ignoring(두 번째 코드)이 같은게 아닐까라는 고민을 할 수도 있다.

ignoring를 사용한 코드는 Spring Security의 대상에 포함되지 않는다. 그래서 어떤 필터도 실행되지 않기 때문에 permitAll보다 ignoring을 사용한 것이 성능적으로 우수하다.

특히 정적 리소스와 같이 접근 횟수가 잦은 경우에는 ignoring을 사용하는 것이 좋다.

 

 

댓글