목차

설정 간소화

개요

표준프레임워크 3.0부터 Server security에 대하여 설정을 간소화 할 수 있는 방법을 제공한다.

내부적으로 필요한 설정을 가지고 있고, XML Schema를 통해 필요한 설정만을 추가할 수 있도록 제공한다.

XML namespace 및 schema 설정

설정 간소화 기능을 사용하기 위해서는 다음과 같은 xml 선언이 필요하다.
4.1 > 4.2 업그래이드 시 xsd 변경(egov-security-4.1.0.xsd > egov-security-4.2.0.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:egov-security="http://maven.egovframe.go.kr/schema/egov-security"
	xmlns:security="http://www.springframework.org/schema/security"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
		http://maven.egovframe.go.kr/schema/egov-security http://maven.egovframe.go.kr/schema/egov-security/egov-security-4.2.0.xsd">

Security Config 설정

Security에 대한 기본 설정 정보를 제공한다.

예:

<egov-security:config id="securityConfig"
	loginUrl="/uat/uia/egovLoginUsr.do"
	logoutSuccessUrl="/EgovContent.do"
	loginFailureUrl="/uat/uia/egovLoginUsr.do?login_error=1"
	accessDeniedUrl="/sec/ram/accessDenied.do"
 
	dataSource="egov.dataSource"
	jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
                                  USER_ADRES, USER_EMAIL, USER_SE, ORGNZT_ID, ESNTL_ID,
                                  (select a.ORGNZT_NM from COMTNORGNZTINFO a where a.ORGNZT_ID = m.ORGNZT_ID) ORGNZT_NM
                                  FROM COMVNUSERMASTER m WHERE CONCAT(USER_SE, USER_ID) = ?"
	jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY
                                        FROM COMTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
                                        WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
	jdbcMapClass="egovframework.com.sec.security.common.EgovSessionMapping"
 
	requestMatcherType="regex"
	hash="plaintext"
	hashBase64="false"
 
	concurrentMaxSessons="1"
	concurrentExpiredUrl="/EgovContent.do"
	errorIfMaximumExceeded="false"
 
	defaultTargetUrl="/EgovContent.do"
	alwaysUseDefaultTargetUrl="true"
 
	sniff="true"
	xframeOptions="SAMEORIGIN" 
	xssProtection="true" 
	cacheControl="false"
	csrf="false"
	csrfAccessDeniedUrl="/egovCSRFAccessDenied.do"
/>

속성 설명

속성 설명 필수여부 비고
loginUrl 로그인 페이지 URL 필수
logoutSuccessUrl 로그아웃 처리 시 호출되는 페이지 URL 필수
loginFailureUrl 로그인 실패 시 호출되는 페이지 URL 필수
accessDeniedUrl 권한이 없는 경우 호출되는 페이지 URL 필수
dataSource DBMS 설정 dataSource 선택 미지정시 'dataSource' bean name 사용
jdbcUsersByUsernameQuery 인증에 사용되는 query 선택 default : “select user_id, password, enabled, users.* from users where user_id = ?”
jdbcAuthoritiesByUsernameQuery 인증된 사용자의 권한(authority) 조회 query 선택 default : “select user_id, authority from authorites where user_id = ?”
jdbcMapClass 사용자 정보 mapping 처리 class 선택 default : egovframework.rte.fdl.security.userdetails.DefaultMapUserDetailsMapping
requestMatcherType 패턴 매칭 방식(regex, ant, ciRegex: case-insensitive regex) 선택 default : regex
hash 패스워드 저장 방식 (sha-256, plaintext, sha, md5, bcrypt) 선택 default : sha-256
hashBase64 hash값 base64 인코딩 사용 여부 선택 default : true
concurrentMaxSessons 동시 접속가능 연결수 선택 default : 999
concurrentExpiredUrl expired된 경우 redirect되는 페이지 URL 선택
errorIfMaximumExceeded 중복 로그인 방지 옵션 필수 default : false
defaultTargetUrl 로그인 성공시 redirect되는 페이지 URL 선택 미지정시 처음 접속하고자 했던 페이지 URL로 redirect됨
alwaysUseDefaultTargetUrl 로그인 이후 설정한 페이지로 이동하게 하는 옶션 필수 default : true
sniff 선언된 콘텐츠 유형으로부터 벗어난 응답에 대한 브라우저의 MIME 가로채기를 방지 여부 필수 default : true
xframeOptions sniff 옵션 이 ture 일때 X-Frame-Options 범위설정 선택 DENY, SAMEORIGIN
xssProtection XSS Protection 기능의 사용 여부 필수 default : true
cacheControl 캐쉬 비활성화 여부 옵션 필수 default : false
csrf spring security의 csrf 기능 사용 여부 필수 default : false
csrfAccessDeniedUrl 토큰 검증이 실패했을 경우 호출되는 페이지 URL 필수
useExpressions Spring 표현 언어(SpEL) 설정 옵션 선택 default : false

Security Config Initializer 설정

Security에 대한 초기화 처리 정보를 제공한다.

예:

<egov-security:initializer
	id="initializer"
	supportPointcut="true"
/>

속성 설명

속성 설명 필수여부 비고
supportPointcut pointcut 방식 지원 여부 선택 default : false
supportMethod method 방식 지원 여부 선택 default : true

Security Object Config 설정

Security에 대한 기본 query 설정 정보를 제공한다.

예:

<egov-security:secured-object-config
	id="securedObjectConfig"
	roleHierarchyString="
			ROLE_ADMIN > ROLE_USER
			ROLE_USER > ROLE_RESTRICTED
			ROLE_RESTRICTED > IS_AUTHENTICATED_FULLY
			IS_AUTHENTICATED_FULLY >	IS_AUTHENTICATED_REMEMBERED
			IS_AUTHENTICATED_REMEMBERED > IS_AUTHENTICATED_ANONYMOUSLY"
	sqlRolesAndUrl="
			SELECT auth.URL url, code.CODE_NM authority
			FROM RTETNAUTH auth, RTETCCODE code
			WHERE code.CODE_ID = auth.MNGR_SE"
/>

속성 설명

속성 설명 필수여부 비고
roleHierarchyString 계층처리를 위한 설정 문자열 지정 선택 미지정시 DB로부터 지정된 설정정보 지정
sqlRolesAndUrl URL 방식 role 지정 query 선택 미지정시 SecuredObjectDAO의 기본 query가 처리됨
sqlRolesAndMethod method 방식 role 지정 query 선택
sqlRolesAndPointcut pointcut 방식 role 지정 query 선택
sqlRegexMatchedRequestMapping request 마다 best matching url 보호자원 지정 query 선택
sqlHierarchicalRoles 계층처리를 위한 query 선택