Spring 프레임 워 크 응용 권한 제어 시스템 상세 설명

Spring 프레임 워 크 는 우수한 다 층 J2EE 시스템 프레임 워 크 로 Spring 자체 가 시스템 에 대한 안전성 지원 을 제공 하지 않 았 다.Acegi 는 Spring IOC 와 AOP 메커니즘 을 바탕 으로 이 루어 진 안전 프레임 워 크 이다.본 고 는 Acegi 안전 프레임 워 크 에서 각 부품 간 의 상호작용 을 연구 하고 Acegi 데이터베이스 디자인 을 확장 함으로써 Spring 프레임 워 크 를 바탕 으로 하 는 응용 안전 통제 방법 을 실현 했다.
머리말
최근 몇 년 동안 인터넷 기술 의 신속 한 발전 에 따라 컴퓨터 네트워크 는 사람들의 업무,학습 과 일상생활 에 깊이 들 어 갔다.그래서 안전 한 웹 응용 을 어떻게 구축 하 는 지도 현재 가장 핫 한 화제 가 되 었 다.Spring 은 IoC(Inversion of Control)와 AOP(Aspect Oriented Programming)를 기반 으로 한 다 층 J2EE 애플 리 케 이 션 프레임 워 크 다.Spring 프레임 워 크 는 우수한 특성 으로 점점 더 많은 개발 자 들 의 관심 을 끌 고 있 으 며 대량의 시스템 개발 에 사용 되 고 있다.그러나 기 존의 Spring 프레임 워 크 자체 가 시스템 안전성 에 대한 지원 을 제공 하지 않 았 다.본 고 는 Spring 프레임 워 크 에 사용 할 수 있 는 안전 프레임 워 크 Acegi 를 소개 하고 Spring 프레임 워 크 에서 Acegi 를 사용 하여 안전 사용자 인증 과 자원 권한 수여 통 제 를 실현 하 는 데 심도 있 는 연구 와 확 대 를 실시 하 는 동시에 실행 가능 한 해결 방안 을 제시 했다.
2.Spring 프레임 워 크 와 Acegi 안전 프레임 워 크 소개 2.1 spring 프레임 워 크
Spring 프레임 워 크 는 Open Source 가 개발 한 우수한 다 층 J2EE 시스템 프레임 워 크 로 기업 급 응용 에 매우 경량급 해결 방안 을 제공 하여 응용 개발 의 난이도 와 복잡 도 를 크게 낮 추고 개발 의 속 도 를 높 였 다.
스프링 프레임 의 핵심 은 IoC 와 AOP 다.IoC 는 디자인 모델,즉 IoC 모델 이다.IoC 모드 는 클래스 간 의 결합 도 를 한층 낮 추고 전통 적 인 대상 의 생 성 방법 을 바 꾸 어 배치 식 대상 관리 방식 을 실현 했다.Spring 프레임 워 크 에서 IoC 용기 가 배치 적 인 대상 의 관 리 를 책임 진다.IoC 모델 은 시스템 개발 과 유지 의 유연성 을 크게 향상 시 켰 다.
AOP 는 시스템 의 횡단면 에서 문 제 를 주목 하 는 프로 그래 밍 모델 이다.전통 적 인 대상 프로 그래 밍 OOP 는 주로 시스템 의 수직 적 인 측면 에서 문 제 를 주목 하고 시스템 의 횡단면 에 대한 관심 이 적 거나 주목 하기 어렵다.그러면 시스템 의 안전성,로그,사무 와 다른 기업 급 서 비 스 를 고려 할 때 OOP 는 어 쩔 수 없 이 모든 관련 유형 에 비슷 한 시스템 서비스 급 코드 를 추가 할 수 밖 에 없다.AOP 는 시스템 급 서비스 문 제 를 해결 하기 위해 좋 은 방법 을 제공 했다.AOP 는 시스템 서 비 스 를 측면 으로 보고 클래스 에 성명 식 시스템 서비스 방식 을 제공한다.자바 류 는 로그 서비스의 존 재 를 알 필요 도 없고 관련 코드 를 고려 할 필요 도 없다.그래서 AOP 로 작 성 된 프로그램 은 느슨 한 결합 으로 코드 의 재 활용 성 이 향상 되 었 습 니 다.
2.2 Acegi 안전 프레임 워 크
Spring 프레임 워 크 를 통 해 개발 자 는 구조 가 좋 은 WEB 응용 을 신속하게 구축 할 수 있 지만 기 존의 Spring 프레임 워 크 자체 가 안전 과 관련 된 해결 방안 을 제공 하지 않 았 습 니 다.마찬가지 로 Open Source 커 뮤 니 티 에서 온 Acegi 안전 프레임 워 크 는 Spring 프레임 워 크 를 바탕 으로 하 는 WEB 응용 안전 통 제 를 실현 하 는 데 좋 은 해결 방안 을 제공 했다.Acegi 자체 가 Spring 이 제공 하 는 IoC 와 AOP 체 제 를 이용 하여 이 루어 진 안전 프레임 워 크 로 안전성 서 비 스 를 J2EE 플랫폼 의 시스템 급 서비스 로 AOP Aspect 형식 으로 발표 합 니 다.그래서 Acegi 안전 프레임 워 크 를 통 해 개발 자 는 Spring 에서 성명 식 방식 으로 안전 통 제 를 실현 할 수 있 습 니 다.
Acegi 안전 프레임 워 크 는 주로 안전 관리 대상,차단기 와 안전 제어 관리 구성 요소 로 구성 된다.안전 관리 대상 은 시스템 이 안전 통 제 를 할 수 있 는 실체 이 고 Acegi 프레임 워 크 는 주로 지원 방법 과 URL 요청 두 가지 안전 관리 대상 이다.차단 기 는 Acegi 의 중요 한 부품 으로 안전 제어 요청 의 차단 을 실현 하고 서로 다른 안전 관리 대상 의 안전 제어 요청 에 대해 서로 다른 차단 기 를 사용 하여 차단 합 니 다.안전 제어 관리 부품 은 각종 안전 통 제 를 실제 적 으로 실현 하 는 구성 요소 로 차단기 에 의 해 차단 되 는 요청 에 대해 안전 관리 와 통 제 를 한다.주요 구성 요 소 는 사용자 인증 을 실현 하 는 AuthenticationManager,사용자 권한 수 여 를 실현 하 는 AccessDecisionManager 와 각 색 전환 을 실현 하 는 RunAsManager 를 포함한다.안전 관리 대상,차단기 와 안전 제어 관리 구성 요소 의 관 계 는 그림 1 과 같다.
3.Acegi 안전 프레임 워 크 가 Spring 프레임 워 크 를 바탕 으로 하 는 시스템 에서 의 응용 3.1 분석 시스템 의 안전성 수요
우선,업무 방법 과 URL 자원 을 위 한 안전 통제 대상 을 명 확 히 해 야 한다.
그 다음으로 시스템 신분 인증 자료 와 자원 권한 수여 정보의 데이터 지속 화 형식 을 더욱 명확 하 게 해 야 한다.
3.2 Acegi 보안 시스템 데이터베이스 디자인
Acegi 프레임 워 크 에 서 는 다양한 보안 정 보 를 지속 적 으로 지원 하 며,설정 파일 에 관계 데이터 베 이 스 를 설정 하거나 저장 할 수 있 습 니 다.실제 응용 에서 수 요 는 자주 변화 하기 때문이다.따라서 설정 파일 에서 설정 은 실제 응용 수 요 를 만족 시 킬 수 없습니다.그러나 Acegi 자체 가 권한 표 에 대한 디자인 은 매우 간단 합 니 다.users 표{username,password,enabled}과 authorities 표{username,authority}.이런 간단 한 디자인 은 복잡 한 권한 수 요 를 적용 할 수 없습니다.권한 관리의 복잡성 을 해결 하기 위해 여기 서 role(역할)의 개념 을 도입 하여 사용자 와 권한 을 분리 시 켰 다.한 사용 자 는 여러 개의 역할 을 가지 고 한 캐릭터 는 여러 개의 해당 하 는 권한 을 가지 기 때문에 안전 전략 을 더욱 유연 하 게 지원 할 수 있다.
또한 Acegi 보안 프레임 워 크 에 더욱 잘 맞 추기 위해 resource(자원)라 는 개념 도 도입 했다.자원 은 URL 과 FUNCTION(방법)두 가지 로 나 눌 수 있 고 하나의 권한 은 여러 자원 에 대응 할 수 있다.구체 적 인 데이터베이스 디자인 은 그림 2 참조.

그림 1 안전 관리 대상,차단기 와 안전 관리 구성 요소 의 상호작용 그림

그림 2 Acegi 안전 제어 시스템 데이터베이스 디자인
3.3 인증 관리자,권한 부여 관리자 의 설정
시스템 의 안전 통 제 를 실현 하려 면 먼저 시스템 의 안전 관리자 와 권한 수여 관리 자 를 설정 해 야 한다.시스템 이 인증 과 권한 수 여 를 하려 면 안전 정 보 를 얻어 야 한다.Acegi 자체 가 인증 정보 에 대한 획득 체 제 를 제공 하고 인증 과 권한 수 여 를 실현 하 는 과정 에서 시스템 은 자발적으로 조제 정보 와 해당 하 는 정보 에 따라 안전 정 보 를 해석 하고 읽 을 것 이다.그림 3 은 사용자 안전 정 보 를 데이터베이스 에 저장 하 는 인증 관리자 의 설정 설명 도 를 보 여 준다.
그림 에 대응 하 는 XML 프로필 의 코드 는 다음 과 같 습 니 다.

/*      datasource  Acegi   jdbcDao */
<bean id=”dataSource” class=”org.springframework.jdbc.datasource.DriverManagerDataSource”>
<property name=”driverClassName”>
<value>${jdbc.driverClassName}</value>
</property>
<property name=”url”>
<value>${jdbc.url}</value>
</property>

그림 3 인증 관리자 배치 설명도

<property name=”username”>
<value>${jdbc.username}</value>
</property>
<property name=”password”>
<value>${jdbc.password}</value>
</property>
</bean>
<bean id=”jdbcDaoImpl” class=”org.acegisecurity. roviders. dao.jdbc.JdbcDaoImpl”>
<property name=”dataSource”>
<ref bean=”dataSource”/>
</property>
</bean>
/*           */
<bean id=”passwordEncoder”
Class=”org.acegisecurity.providers.encoding.Md5passwordEncoder”/>
/*        */
<bean id=”userCache” class=”org.acegiSecurity. providers. dao.cache.EhCacheBasedUserCache”>
…//             
</bean>
/*  daoAuthenticationProvider*/
<bean id=”daoAuthenticationProvider” 
class=”org.acegisecurity.providers.dao.DaoAuthenticationProvider”>
<property name=”authenticationDao”>
<ref local=”JdbcDaoImpl”/>
</property>
<property name=”passwordEncoder”>
<ref local=” passwordEncoder”/>
</property>
<property name=”userCache”>
<ref local=” userCache”/>
</property>
</bean>
/*       */
<bean id=”authenticationManager” class=”org.acegisecurity. providers.ProviderManager”>
<property name=”providers”>
<list>
<ref local=”daoAuthenticationProvider”/>
</list>
</property>
</bean>
인증 관리자 의 설정 방법 은 인증 관리자 의 설정 과 기본적으로 유사 하 므 로 더 이상 토론 하지 않 습 니 다.
3.4 보안 요청 차단기 설정
이상 설정 이 완료 되면 보안 차단 기 를 설정 해 야 합 니 다.서로 다른 안전 관리 대상 은 서로 다른 안전 차단 기 를 사용 해 야 한다.방법 급 보안 인증 에 사용 할 차단 기 는 MethodSecurity Interceptor 이 고 URL 자원 에 사용 할 보안 차단 기 는 FilterSecurity Interceptor 입 니 다.이 가운데 MethodSecurity Interceptor 차단 기 는 Spring Aop 에 의 해 이 루어 졌 고 FilterSecurity Interceptor 차단 기 는 Servlet Filter 에 의 해 이 루어 졌 다.본 고 는 URL 자원 이 요청 한 안전 차단 기 를 예 로 들 어 설정 상황 을 설명 한다.
URL 자원 이 안전 차단 을 요청 하기 때문에 필 터 를 통 해 이 루어 집 니 다.따라서 우선 Acegi Servlet 필 터 를 설정 해 야 합 니 다.필 터 는 AOP Around 장비 와 유사 하여 웹 자원 호출 전후 에 진행 되 는 6 가지 필 터 를 실현 합 니 다.그들 은 순서대로 Servlet 필터 체인 을 구성 하여 클 라 이언 트 요청 을 순서대로 처리 합 니 다.주의해 야 할 것 은 필터 설정 의 순 서 는 교환 할 수 없습니다.필 터 를 사용 할 필요 가 없 을 때 직접 삭제 하고 설명 할 수 있 습 니 다.필 터 는 웹.xml 에서 형식 을 설정 합 니 다.

<filter>
<filter-name>Acegi HTTP Request Security Filter</filter-name>
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>
Org.acegisecurity.intercept.web.SecurityEnforcementFilter
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Acigi HTTP Request Security Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
spring applicationContext.xml 파일 의 설정 형식 은?

<bean id=”securityEnforcementFilter” class=””>
<property name=”filterSecurityInterceptor”>
<ref bean=”filterInvocationInteceptor”/>
</property>
<property name=”authenticationEntryPoint”>
<ref bean=”authenticationProcessingFilterEntryPoint”/>
</property>
이 코드 는 Security Enforcement Filter 의 설정 입 니 다.이 필 터 는 사용자 가 웹 자원 에 접근 할 권리 가 있 는 지 에 대해 최종 결정 을 내 립 니 다.다른 필터 의 설정 은 같 습 니 다.
필 터 를 설정 한 후 차단기 FilterSecurity Interceptor 를 설정 해 야 합 니 다.

<bean id=”filterInvocationInterceptor”
Class=””>
<property name=”authenuserCacheticationManager”>1
<property name=”accessDecisionManager”>
<property name=”objectDefinitionSource”>
<ref local="filterObjectDefinitionSource"/>
</property>
<bean
class="org.xiaohongli.acegi.db.DBFilterObjectDefinitionSource">
<constructor-arg><refbean="jdbcTemplate"/> 
</constructor-arg>
</bean>
object DefinitionSource 속성 은 보 호 된 URL 자원 을 정의 합 니 다.로 컬 대상 filter Object DefinitionSource 를 참조 합 니 다.filter Object DefinitionSource 류 는 데이터베이스 에서 보호 할 URL 보안 정 보 를 읽 고 PathBased FilterInvocation Definition Map 류 를 확장 합 니 다.
마찬가지 로 다른 methodObject DefinitionSource 류 가 데이터베이스 에서 보호 할 FUNCTION 자원 을 읽 고 MethodDefinitionMap 류 를 확장 합 니 다.편폭 에 한 하여 구체 적 으로 실 현 된 소스 코드 를 표시 하지 않 습 니 다.

<bean
class="org.xiaohongli.acegi.db.DBMethodObjectDefinitionSource">
<constructor-arg><refbean="jdbcTemplate"/> 
</constructor-arg>
</bean>
종결 어
Spring 이 점점 더 많은 프로젝트 에서 응용 되 기 때문에 Spring 응용 을 바탕 으로 하 는 안전 통제 시스템 에 대한 연 구 는 매우 중요 하 다.Acegi 는 Spring 응용 안전 에 대한 지원 을 제 공 했 지만 Acegi 자체 가 제공 한 실례 는 대규모의 복잡 한 권한 수 요 를 만족 시 키 지 못 한다.본 고 는 Acegi 의 데이터베이스 디자인 을 확장 함으로써 복잡 한 권한 수 요 를 만족 시 킬 수 있다.그러나 Acegi 를 비 Spring 시스템 에 어떻게 활용 하 는 지 는 좀 더 연구 가 필요 하 다.
여러분 의 읽 기와 우리 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기