표준프레임워크 3.0부터 Server security에 대하여 설정을 간소화 할 수 있는 방법을 제공한다.
내부적으로 필요한 설정을 가지고 있고, XML Schema를 통해 필요한 설정만을 추가할 수 있도록 제공한다.
설정 간소화 기능을 사용하기 위해서는 다음과 같은 xml 선언이 필요하다.
3.7 > 3.8 업그래이드 시 xsd 변경(spring-security-4.0.xsd > spring-security-4.2.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://www.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-4.2.xsd http://www.egovframe.go.kr/schema/egov-security http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd">
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" defaultTargetUrl="/EgovContent.do" sniff="true" xframeOptions="SAMEORIGIN" xssProtection="true" csrf="false" />
속성 | 설명 | 필수여부 | 비고 |
---|---|---|---|
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 | 선택 | |
defaultTargetUrl | 로그인 성공시 redirect되는 페이지 URL | 선택 | 미지정시 처음 접속하고자 했던 페이지 URL로 redirect됨 |
sniff | 선언된 콘텐츠 유형으로부터 벗어난 응답에 대한 브라우저의 MIME 가로채기를 방지 여부 | 필수 | default : true |
xframeOptions | sniff 옵션 이 ture 일때 X-Frame-Options 범위설정 | 선택 | DENY, SAMEORIGIN |
xssProtection | XSS Protection 기능의 사용 여부 | 필수 | default=“true” |
csrf | spring security의 csrf 기능 사용 여부 | 필수 | default=“false” |
Security에 대한 초기화 처리 정보를 제공한다.
예:
<egov-security:initializer id="initializer" supportPointcut="true" />
속성 | 설명 | 필수여부 | 비고 |
---|---|---|---|
supportPointcut | pointcut 방식 지원 여부 | 선택 | default : false |
supportMethod | method 방식 지원 여부 | 선택 | default : true |
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 | 선택 | 〃 |