반응형
스프링 Security
|
환경설정
- 프로젝트 생성(Spring Legacy Project)
- 프로젝트 properties에서 project facets 수정

- pom.xml은 spring 프로젝트꺼 복붙하기
- log4jdbc.log4j2.properties 파일도 spring 프로젝트꺼 복사해서 src/main/resources/ 경로에 붙여넣기
Spring Security를 SpringMVC 프로그램에 적용하는 방법
- spring-security-web, spring-security-core, spring-security-config, spring-security-taglibs 라이브러리를 프로젝트에 빌드 처리 - 메이븐 : pom.xml
→ 4개의 라이브러리 모두 5.X.X 대 버전 사용(6.X.X대 버전은 JDK17 버전에서 사용)

1. spring-security-web
|


- [web.xml] 파일에 Spring Security 기능을 제공하는 필터 클래스를 필터로 등록하고 필터가 실행되기 위한 URL 패턴을 매핑 처리
<!-- DelegatingFilterProxy 클래스를 필터로 등록되도록 설정 --> <!-- => 반드시 필터의 이름을 [springSecurityFilterChain]으로 등록되도록 작성해야 한다. --> <!-- DelegatingFilterProxy : 메인 Filter Chain에 위치되도록 설정하는 클래스 --> <!-- => Spring Security 필터를 사용하는 시작점으로 설정되며 서블릿 컨테이너(WAS)의 필터와 ApplicationContext(Spring Container)에서 Spring Bean으로 등록된 필터를 연결하는 다리 역할 수행 --> <!-- => 사용자가 웹프로그램을 요청하면 DelegatingFilterProxy 필터가 요청을 받아 FilterChainProxy 필터에게 요청을 위임하여 필요한 필터들이 순서대로 실행되도록 동작 → DelegatingFilterProxy 얘 하나만 필터로 등록하면 다른 필터와 연결이 된다. (DelegatingFilterProxy 얘 하나만 필터로 등록하면 다른 여러가지 필터를 사용해서 인증과 인가를 해주는 것이라고 생각하면 된다.) <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |

- [web.xml] 파일에 Spring Security 기능의 필터를 사용하기 위한 정보를 제공하는 Spring Bean Configuration File 설정 - ContextLoaderListener 클래스가 읽을 수 있도록 파일 경로 지정
→ context-param 엘리먼트로 작성
→ security-context.xml : spring security 관련 spring bean을 등록하는데 사용하거나, 필터에 필요한 정보를 제공할 수 있다.
→ security-context.xml <beans>엘리먼트 속성 값 순서 변경


- namespace 3개 추가 : beans / context / security
<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> </beans:beans>
|
- Spring Security 기능을 구현하기 위한 Spring Bean Configuration File 작성
→ use-expressions 속성을 [true]로 설정한 경우 SpEL를 사용해 권한 설정 가능 → 권한이 없는 사용자가 페이지를 요청할 경우 AccessDeniedException 발생 |
|
|
|
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.security-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-taglibs -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${spring.security-version}</version>
</dependency>
Spring Security를 SpringMVC 프로그램에 적용하여 제공 받을 수 있는 기능 (필터를 사용해서 이 기능들을 제공한다고 생각하면 됨) |
|
Spring Security Filter의 종류 |
|
CommonsMultipartResolver 를 Spring 프로젝트에서는 servlet-context.xml에 등록했는데, Spring Security 프로젝트에서는 root-context.xml 에 등록을 해줘야한다.
Spring Security를 쓰면 multipart/form-data를 전달할때는 Spring Security의 영향을 받기 때문에 root-context.xml에 써야 하는 것이다.
servlet-context.xml에 등록하면 Spring Bean 인식을 못한다.
반응형
댓글