W15D4 - SpringSecurity

Onni·2021년 11월 11일
0

TIL

목록 보기
19/21
post-thumbnail

웹 어플리케이션의 주요 보안 위협요소

온라인 쇼핑물의 경우 판매하는 상품 목록
사용자의 민감정보 노출
데이터 관리하는 기능 제공 x

  • 인증 영역
    사용자의 개인정보 확인 , 수정
    ex) 마이페이지

Spring에 SpringSecurity 적용하기

기본 로그인 계정 설정 추가

  • localhost8080/me 에 접속시 me.html 파일이 랜더링 되지 않고 localhost8080/login 페이지로 뜨는것을 확인 할 수 있다. 그 이유는 설정해 두었던 WebSecurityConfigure 에서 확인이 가능하다.

  • WebSecurityConfigure를 살펴보면 /me 페이지에 접속하기위해서는 "User" , "Admin" 의 권한이 필요하다는 것을확인 할 수 있다. 현재는 이와 같은 권한이 없기때문에 /me 페이지가 랜더링 되지 않은 것이다.


  • 로그인페이지에서 로그인 하기 위해 프로젝트를 실행하면 자동으로 제공해주는 비밀번호를 저장하고 로그인창에서 로그인을 해본다. 로그인은 되지만 아직 "user" 또는 "admin"의 권한이 없기 때문에 404페이지가 나온다. 자동으로 제공해주는 비밀번호는 프로젝트를 실행할때마다 값이 바뀐다.

  • 권한을 주기 위해 application.yml 에다가 사용자에 대한 정보와 권한에 대한 정보를 넣어준다. 이 아이디와 패스워드로 로그인 할 경우 정상적으로 /me 페이지가 뜨는 것을 확인 할 수 있다. 이때, 처음에 프로젝트 실행할때 나왔던 password에 대한 정보는 더 이상 나오지 않는다.

ignoring 처리

  • FilterChainProxy 클래스
    스프링시큐리티 진입점
    필터 체인의 갯수가 많아 모든 요청에 필터체인을 구성하는것은 비효율적일수 있다. 예를 들어 정적리소스에 대한 요청은 필터체인을 할필요 없지만 별도의 설정이 없으면 필터링을 하게 된다. 문제가 생기는 것은 아니지만 비효율적이므로 명시적으로 스프링시큐리티 예외대상으로 지정하고 필터체인 안되게 설정 해 주어야한다.

  • ignoring 부분을 주석처리 전후를 FilterChainProxy에 breakPoint를 두고 디버깅 모드로 실행해 비교해 보자. 각각 실행 후 localhost8080 페이지에 접속 시 아래와 같은 결과를 볼 수 있다.

  • 먼저 ignore 하기 전에는 filter가 적용될 필요 없는 favi.png 파일에 대해서도 총 14개 항목에 대해 필터링 된 것을 확일 할 수 있다.

  • ignore 후에는 favi.png 파일에 대해 필터링 처리를 하지 않은것을 확인 할 수 있다.

스프링시큐리티를 굳이 적용할 필요 없는 항목에 대해서는 ignoring 처리를 해줌으로써 더 효육적이다.

Thymeleaf 확장

  • index.html

  • me.html

로그인이 되어있지 않기 때문에 anonymousUser라고 뜬다.

me페이지에서 로그인 후 사용자가 USER 권한을 가지고 있기 때문에 권한 : USER 가 랜더링 된다. 만약 사용자가 롤권한을 가지고있으면 권한:ROLE 이 랜더링된다.

profile
꿈꿈

0개의 댓글