# Spring Security 이해와 활용 ## 1.개요 - Spring security - 엔터프라이즈 어플리케이션을 위한 인증(Authentication)권한 처리(Authorization) 서비스를 제공하는 강력하고 유연한 보안 솔루션 - Servlet Filter 와 Java AOP 를 통한 Interception를 사용하여 보안을 강제하며 Spring의 IoC와 lifecycle 서비스 기반으로 동작 - Authentication, Web URL authorizationo, Method 호출 authorization, 채널 보안(https 강제) 등의 주요기능 제공 - Service Layer 보안 제공으로 Layering issue 해결 및 웹 클라이언트 외의 다양한 rich 클라이언트/웹 서비스에 대한 보안 제어 지원 - 재사용성, 이식성, 코드 품질 및 다양한 타 프레임워크 지원 ## 2.기본설정 - maven 설정 ### Dependency 추가 ```xml org.springframework.security spring-security-core ${spring.maven.artifact.version} org.springframework.security spring-security-web ${spring.maven.artifact.version} org.springframework.security spring-security-config ${spring.maven.artifact.version} ``` - spring-security-core - spring-security-web - spring-security-config 3개를 추가한다. ### taglib 사용시 추가 ```xml org.springframework.security spring-security-taglibs ${spring.maven.artifact.version} ``` ### egovframework Dependency 추가 ```xml egovframework.rte egovframework.rte.fdl.security 2.6.0 ``` ### web.xml ```xml springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* ``` `filterchain`을 사용한다. ## 2. 기본설정 - DelegatingFilterProxy - Spring security가 모든 request를 감싸게 해서 강제적으로 보안이 적용되도록 하는 servlet filter - 실제로는 ``에 지정된 이름을 갖는 Spring bean(filter interface 구현)을 호출하는 역할을 담당 - springSecurityFilterChain : 이후 설정될 Spring security 에 의해 자동으로 등록되는 filter bean ## 2. 기본설정 - security 설정 context-security.xml ```xml ``` authentication-manager 사용. `In-Memory authentication` ```xml ``` ## 3. Form & Basic 로그인 - auto-config `auto-config-="true"` ```html ``` ### 설정 변경 ```xml ``` 설정변경 ```xml ``` ## 4. Database 확장 - 인증 확장 설정 ### EgovJdbcUserDetailsManager 적용 ```xml ``` - 기존 와의 차이점 - Role Hierarchy 지원(기존의 경우 별도 UserDetailsServiceWrapper 또는 RoleHierarchyVoter 필요) - Mapping class(MappingSqlQuery) 지원 (기존의 경우 상속 필요)