디펜던시 설정
스프링 시큐리티를 사용하기위해 pom.xml 디펜던시를 추가한다.
추가로, Spring FrameWork Version을 4.2.5 RELEASE로 올려준다.
web-xml 파일에 스프링 시큐리티 보안설정을 위한 <filter>태그를 추가한다.
springSecurityFilterChain은 스프링 시큐리티의 핵심기능을 사용할수있게 해주는 필터로 이를 통해 스프링 시큐리티의 DelegatingFilterPro xy 필터를 사용할수있다.
또한 의 param-value에 기존의 root-context.xml 외 추가로 appServlet의 security-context.xml을 추가해준다. 해당 경로에 xml파일을 생성해주면 appServlet(DispatcherServlet)이 security-context.xml 또한 읽을수있게 해준다.
DelegatingFilterProxy는 사용자의 요청이 스프링 MVC에 도달하기전에, Servlet Container에서 먼저 해당 요청을 받는다.
스프링 시큐리티 작동순서
1. DelegatingFilterProxy가 사용자의 요청이 servlet container로 넘어온 요청을 받는다.
2. DelegatingFilterProxy는 springSecurityFilterChain 이름으로 생성된 Bean을 ApplicationContext에서 찾는다.
3. 해당하는 Bean을 찾으면 springSecurityFilterChain으로 해당요청을 위임한다.
즉 DelegatingFilterProxy는 일종의 DispacherServlet와 비슷한 역할을 한다.
요청을 위임받은 springSecurityFilterChain은 각각의 필터들로 연결되며 각 필터들에서 해당하는 기능을 수행하고 넘겨준다.
스프링 시큐리티 사용하기
위에 설정해준 security servlet context을 읽는다고 해줬으니, appservlet내에 security-context라는 이름의 spring bean configuration file형식으로 만들어준다.
해당 파일에서 스프링 시큐리티에 관련된 설정들을 줄수있다.
security-context 파일에서 cglib 시큐리티 태그를 사용하기위해 하단의 네임스페이스에 security를 설정해주면
<security~>태그를 사용하여 보안관련 설정을 할수있다.
<security:intercept-url> : 특정 url패턴으로의 접근에 대한 제한을 설정한다. access를 통해 특정 권한이 있는 유저만 접근할수있게해준다.
스프링 시큐리티에서 기본으로 제공하는 view를 통해 테스트해볼수있다.
localhost/spring_security/spring_security_login에 접속하면 로그인 화면이 나오고, 여기서 security-context에 설정한
user name과 password를 입력하면 해당 권한에 맞게 로그인이 된다.
그리고 이후 /login.html 또는 /welome.html 경로 url에 대한 요청이 들어오면
intercept하여 설정한 사용자들의 권한에 맞으면 스프링 컨테이너의 MVC 컨트롤러로, 맞지않으면 403 ERROR을 발생시킨다.
'Category > Project' 카테고리의 다른 글
[팀프로젝트] 12일차 - 전자결재 시스템 만들기 (0) | 2024.01.30 |
---|---|
[팀프로젝트] Mybatis 매핑에러 - BindingException (0) | 2024.01.29 |
[팀프로젝트] 10일차 - 메시지 기능 구현 (2) | 2024.01.28 |
[팀프로젝트] JSP Include 동적변수 문제 --해결! (1) | 2024.01.24 |
[팀프로젝트] 7일차 - 그룹웨어 시스템 만들기 (0) | 2024.01.24 |