18. 스프링 시큐리티
18.1 스프링 시큐리티의 개요
18.1.1 웹 보안의 3요소
18.1.1.1 인증(Authentication) : 애플리케이션의 작업을 수행할 수 있는 주체(사용자). 현재 접속중인 사용자가 누구인지 확인하는 과정
18.1.1.2 권한 인가(Authorization) : 인증된 주체가 애플리케이션의 동작을 수행할 수 있도록 허락되어 있는지 증명하는 과정. 현재 사용자가 특정 url에 접속할 권한이 있는지 검사하는 과정
18.1.1.3 UI 처리 : 권한이 없는 사용자가 접근할 경우의 에러 화면 등을 보여주는 과정
18.1.2 스프링 시큐리티
개발자가 직접 처리하던 보안 처리 과정을 스프링 프레임웍에서 제공하는 스프링 시큐리티를 사용하여 사용권한 관리, 비밀번호 암호화, 회원가입 처리, 로그인, 로그아웃 등의 웹 보안 관련 기능 개발을 쉽게 처리할 수 있음.
18.2 실습소스
18.2.1 회원정보 테이블 생성
CREATE TABLE Users (
userid VARCHAR2(255) NOT NULL,
passwd VARCHAR2(255) NOT NULL,
name VARCHAR2(255) NOT NULL,
enabled NUMBER(1) DEFAULT 1,
authority VARCHAR2(20) DEFAULT 'ROLE_USER'
PRIMARY KEY(userid)
);
18.2.2 pom.xml
18.2.3 WEB-INF/web.xml
18.2.5 WEB-INF/spring/appServlet/servlet-context.xml
18.2.6 WEB-INF/spring/root-context.xml
18.2.7 src/main/resources/mybatis-config.xml
18.2.8 src/main/resources/log4j.xml
18.2.9 src/main/resources/log4jdbc.log4j2.properties
18.2.10 src/main/resources/logback.xml
18.2.11 model.dto.UserDTO.java
18.2.13 model.dao.UserDTOImpl.java
18.2.15 service.UserAuthenticationService.java
18.2.16 service.UserDeniedHandler.java
18.2.17 service.UserLoginFailureHandler.java
18.2.18 service.UserLoginSuccessHandler.java
18.2.19 controller.UserController.java
18.2.20 views/include/css/main.css
18.2.21 views/include/header.jsp
18.2.22 views/user/login.jsp
18.2.24 views/home.jsp
18.2.25 views/admin/main.jsp