Spring 은 Acegi 를 활용 하여 권한 관 리 를 진행 합 니 다.

6118 단어 ssh
간단 한 소개
전형 적 인 웹 응용 에 있어 완벽 한 인증 과 권한 수여 체 제 는 없어 서 는 안 된다. SpringFramework 에서 Juergen Hoeller 가 제공 하 는 범례 인 JPetStore 는 이런 부분 에 대해 소 개 했 지만 아직 부족 하 다. Acegi 는 SpringFramework 에 안전 기계 제 를 전문 적 으로 제공 하 는 프로젝트 로 모두 Acegi Security System for Spring 이 라 고 부 르 는데 현재 버 전 은 0.5.1 이다.현재 제 공 된 기능 에 대해 서 는 절대 다수의 응용 수 요 를 만족 시 킬 수 있 을 것 이다.
본 논문 의 주요 목적 은 Spring 구 조 를 바탕 으로 하 는 웹 응용 에서 Acegi 를 어떻게 사용 하 는 지 설명 하 는 것 이지 그 중의 모든 인터페이스, 각 종 류 를 상세 하 게 소개 하 는 것 이 아니다.이미 존재 하 는 스프링 애플 리 케 이 션 에 대해 서 는 아래 에 소 개 된 절 차 를 통 해 Acegi 가 제공 하 는 인증 과 권한 수 여 를 즉시 받 을 수 있 음 을 주의 하 세 요.
기초 사업
웹 애플 리 케 이 션 lib 에 Acegi 다운로드 패키지 의 acegi - security. jar 를 추가 합 니 다.
web.xml
인증 과 권한 수 여 를 실현 하 는 가장 일반적인 방법 은 filter 를 통 해 Acegi 도 마찬가지 입 니 다. 보통 Acegi 는 웹. xml 에 다음 과 같은 5 개의 filter 를 추가 해 야 합 니 다.
Acegi Channel Processing Filter net.sf.acegisecurity.util.FilterToBeanProxy targetClass net.sf.acegisecurity.securechannel.ChannelProcessingFilter Acegi Authentication Processing Filter net.sf.acegisecurity.util.FilterToBeanProxy targetClass net.sf.acegisecurity.ui.webapp.AuthenticationProcessingFilter Acegi HTTP BASIC Authorization Filter net.sf.acegisecurity.util.FilterToBeanProxy targetClass net.sf.acegisecurity.ui.basicauth.BasicProcessingFilter Acegi Security System for Spring Auto Integration Filter net.sf.acegisecurity.ui.AutoIntegrationFilter Acegi HTTP Request Security Filter net.sf.acegisecurity.util.FilterToBeanProxy targetClass net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter
가장 먼저 현혹 되 는 것 은 net. sf. acegisecurity. util. FilterToBean Proxy 이다. Acegi 는 자신의 문서 에서 'What' 이 라 고 설명 했다.  FilterToBeanProxy does is delegate the Filter 's methods through to a bean which is obtained from the Spring application context. This enables the bean to benefit from the Spring application context lifecy support and configuration flexibility.
그리고 내 려 오 면 filter - mapping 을 추가 합 니 다:
Acegi Channel Processing Filter /* Acegi Authentication Processing Filter /* Acegi HTTP BASIC Authorization Filter /* Acegi Security System for Spring Auto Integration Filter /* Acegi HTTP Request Security Filter /*
 
여기 서 다음 과 같은 세 가 지 를 주의해 야 한다.
1) 이 몇 개의 filter 의 순 서 는 변경 할 수 없고 순서 가 맞지 않 으 면 정상적으로 작 동 할 수 없습니다.
2) https 와 같은 보안 전송 이 필요 하지 않 으 면 'Acegi Channel Processing Filter' 관련 내용 을 주석 하면 됩 니 다.
3) 만약 스프링 이 제공 하 는 원 격 접근 메커니즘, 예 를 들 어 Hessian and Burlap 이 필요 하지 않다 면, "Acegi HTTP BASIC Authorization Filter" 관련 내용 을 주석 하면 됩 니 다.
 
applicationContext.xml
다음은 applicationContext. xml 의 내용 을 추가 하 는 것 입 니 다. 아까 FilterToBean Factory 의 설명 을 통 해 알 수 있 듯 이 진정한 filter 는 Spring 의 applicationContext 에서 관리 되 고 있 습 니 다.
1) 우선, 데이터베이스 에 사용자 이름과 비밀 번 호 를 저장 하 는 table 이 있어 야 합 니 다. Acegi 는 table 의 schema 를 다음 과 같이 요구 해 야 합 니 다.
CREATE TABLE users ( username VARCHAR(50) NOT NULL PRIMARY KEY, password VARCHAR(50) NOT NULL, enabled BIT NOT NULL ); CREATE TABLE authorities ( username VARCHAR(50) NOT NULL, authority VARCHAR(50) NOT NULL ); CREATE UNIQUE INDEX ix_auth_username ON authorities ( username, authority ); ALTER TABLE authorities ADD CONSTRAINT fk_authorities_users foreign key (username) REFERENCES users (username);
2) 데이터 베 이 스 를 방문 하 는 datasource 와 Acegi 의 jdbcDao 를 추가 합 니 다. 다음 과 같 습 니 다.
${jdbc.driverClassName} ${jdbc.url} ${jdbc.username} ${jdbc.password}
3) DaoAuthenticationProvider 추가:
class="net.sf.acegisecurity.providers.dao.DaoAuthenticationProvider"> 5
암호 화 를 필요 로 한다 면 dao AuthenticationProvider 에 추가 하 십시오. Acegi 는 몇 가지 암호 화 방법 을 제공 합 니 다. 자세 한 내용 은 가방 net. sf. acegisecurity. providers. encoding 을 볼 수 있 습 니 다.
4) 인증 관리자 추가:
5) accessDecisionManager 추가:
false
6) 인증 처리 FilterEntryPoint 추가:
/acegilogin.jsp false
그 중에서 acegilogin. jsp 는 로그 인 페이지 이 고 가장 간단 한 로그 인 페이지 는 다음 과 같 습 니 다.
Login Login User: Password:
7) filterInvocationInterceptor 추가:
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON \A/sec/administrator.*\Z=ROLE_SUPERVISOR \A/sec/user.*\Z=ROLE_TELLER
object DefinitionSource 에서 어떤 페이지 에 접근 할 수 있 는 권한 이 필요 한 지 정의 하려 면 자신의 응용 수요 에 따라 수정 해 야 합 니 다. 제 가 위 에서 정의 한 뜻 은 다음 과 같 습 니 다.
a. CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 은 요청 경 로 를 비교 할 때 모두 소문 자로 변환 합 니 다. \ A / sec / administrator. * \ Z = ROLESUPERVISOR 는 ROLE 권한 만 있다 는 뜻 입 니 다.SUPERVISOR 만 / sec / administrator * 페이지 c. \ A / sec / user. * \ Z = ROLETELLER 는 ROLE 권한 만 있다 는 뜻 입 니 다.TELLER 사용자 만 / sec / user * 페이지 에 접근 할 수 있 습 니 다.
8) security Enforcement Filter 추가:
class="net.sf.acegisecurity.intercept.web.SecurityEnforcementFilter">
9) 인증 처리 필터 추가:
/loginerror.jsp / /j_acegi_security_check
이 중 authentication FailureUrl 은 인증 에 실패 한 페이지 입 니 다.
10) 보안 채널 을 통과 하 는 페이지 가 필요 하 다 면 다음 설정 을 추가 합 니 다.
class="net.sf.acegisecurity.securechannel.ChannelProcessingFilter"> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON \A/sec/administrator.*\Z=REQUIRES_SECURE_CHANNEL \A/acegilogin.jsp.*\Z=REQUIRES_SECURE_CHANNEL \A/j_acegi_security_check.*\Z=REQUIRES_SECURE_CHANNEL \A.*\Z=REQUIRES_INSECURE_CHANNEL class="net.sf.acegisecurity.securechannel.ChannelDecisionManagerImpl"> class="net.sf.acegisecurity.securechannel.SecureChannelProcessor"/> class="net.sf.acegisecurity.securechannel.InsecureChannelProcessor"/>
뭐 가 부족 해요?
Acegi 는 현재 두 가지 'secure object' 를 제공 하여 각각 페이지 와 방법 에 대해 안전 인증 관 리 를 하고 있 습 니 다. 제 가 소개 하 는 것 은 FilterSecurity Interceptor 를 이용 하여 페이지 에 접근 할 수 있 는 권한 을 제어 하 는 것 입 니 다. 그 밖 에 Acegi 는 또 다른 Interceptor - MethodSecurity Interceptor 를 제공 합 니 다. runAsManager 와 결합 하여 대상 중의 방법 에 대한 권한 통 제 를 실현 할 수 있 습 니 다.사용 방법 은 Acegi 가 가지 고 있 는 문서 와 contact 범례 를 참조 할 수 있 습 니 다.
마지막 할 말
Acegi 를 어떻게 사용 하 는 지 설명 하 는 것 일 뿐 이 라 고 생각 했 는데 정말 써 보 니 필요 한 모든 bean 을 조리 있 게 정리 하 는 것 이 어렵 습 니 다. 많은 것 을 빠 뜨리 지 않 았 으 면 좋 겠 습 니 다. 제 글 에 누락 되 거나 잘못 되 었 다 면 Acegi 가 가지 고 있 는 quick - start 범례 를 참조 하 시기 바 랍 니 다. 하지만 주의 하 세 요.이 범례 는 직접 가 져 와 서 쓸 수 없다.

좋은 웹페이지 즐겨찾기