한 시간 안에 Acegi Security

Acegi Security는 Java 엔터프라이즈 개발자들 사이에서 심각한 긍정적 인 소문을 불러 일으켰으므로 어떻게 작동하는지 궁금 할 것입니다. 이 기사에서 ShriKant Vashishtha는 실제 Acegi Security 구현의 모든 단계를 안내합니다. 먼저 Java 기반 웹 애플리케이션을위한 양식 기반 인증 및 권한 부여 서비스를 설정 한 다음 동적 권한 부여 및 LDAP와 같은 독점 인증 구현과의 통합을 위해 Acegi Security를 ​​사용자 정의합니다.

Acegi Security는 Spring 프레임 워크를 사용하여 구축 된 Java 엔터프라이즈 애플리케이션을위한 강력하고 유연한 보안 솔루션입니다. Spring 기반 의존성 주입은 Acegi를 완전히 비 침입적인 방식으로 쉽게 구성하고 구현할 수 있도록합니다. 이는 Spring 프레임 워크를 전체적으로 구현하고 싶지 않지만 레거시 애플리케이션에 대해 효과적이고 재사용 가능한 보안이 여전히 필요한 조직에 도움이됩니다.

이 기사는 기본적인 주문 처리 애플리케이션을위한 Acegi Security 구현에 대한 간결한 시작을 제공합니다. 응용 프로그램에 대한 인증 및 권한 부여 서비스를 설정하고 양식 기반 웹 페이지에서 이러한 보안 기능을 구현합니다. 예제를 통해 작업 한 후 약 1 시간 내에 모든 웹 응용 프로그램에 대한 기본 양식 기반 보안을 설정할 수 있습니다.

구현 예제에 대한 간단한 소개에 따라 Acegi를 사용하여 애플리케이션 보안을 사용자 정의 할 수있는 몇 가지 방법에 대해 알아 봅니다. 사용자 역할을 URL에 매핑하는 데이터베이스를 기반으로 동적 역할 기반 인증을 설정하는 방법을 볼 수 있습니다. 마지막으로 기존 독점 인증 구현과 통합 할 수있는 사용자 지정 Acegi 보안 인증 구현을 만드는 방법을 알아 봅니다.

환경 설정

Spring 기반 애플리케이션뿐만 아니라 광범위한 구현에 Acegi의 적용 가능성을 보여주고 싶었습니다. JEE 5를 사용하여 프레젠테이션 레이어 용 JavaServer Pages와 웹 레이아웃 용 SiteMesh를 사용하여 예제 애플리케이션을 구축했습니다. 애플리케이션은 Struts 2를 사용하여 쉽게 빌드 할 수 있으며 Struts 2 인프라는 구현되지는 않았지만 이미 소스 코드에 있습니다. 응용 프로그램에 Acegi 보안을 구현하기 위해 Spring 종속성 주입을 사용했습니다. 애플리케이션 소스 코드를 다운로드하려면 리소스 섹션을 참조하십시오. 다음 단계에 따라 애플리케이션 환경을 설정하십시오.

1 단계. Acegi, Spring 2 및 SiteMesh를 다운로드합니다 (다운로드 링크는 참고 자료 참조).

2 단계. Java 프로젝트에서 다음 폴더 구조를 만듭니다.

src -Java 소스 코드 포함

test -테스트 케이스 포함

config -클래스 경로 내에 있어야하는 모든 속성 / XML 구성 파일

web -웹 애플리케이션 포함

|

decorators -SiteMesh 데코레이터 포함

images -이미지가있는 경우 포함

scripts -JavaScript 파일

styles -CSS (Cascading Style Sheet)

WEB-INF

|

jsp -JSP (JavaServer Pages) 파일 포함

lib -JAR 포함

단계 3. 다음 JAR 파일을 WEB-INF / lib 디렉토리에 복사합니다.

  • acegi-security-1.0.5.jar -Acegi Security 시스템의 주요 클래스
  • cglib-2.1.3.jar -Spring에서 사용하는 코드 생성 라이브러리
  • commons-codec-1.3.jar -Base64, Hex, Phonetic 및 URL과 같은 인코더 및 디코더
  • commons-lang-2.1.jar- 대한 도우미 유틸리티 java.langAPI를
  • ehcache-1.2.3.jar -기본 캐싱 목적으로 사용
  • freemarker-2.3.8.jar -Struts 구현에서 사용
  • jstl.jar, standard.jar -JSTL (JavaServer Pages Standard Tag Library) 태그 라이브러리
  • log4j-1.2.13.jar -로깅 용
  • ognl-2.6.11.jar -Struts 구현에서 사용하는 OGNL 라이브러리
  • sitemesh-2.3.jar -SiteMesh JAR
  • spring.jar -스프링 프레임 워크 JAR
  • struts2-core-2.0.8.jar -Struts 2 코어 JAR
  • xwork-2.0.3.jar -Struts에서 사용

web.xml의 변경 사항

Acegi Security는 서블릿 필터인터셉터 의 개념을 기반으로하기 때문에 목록 1에 표시된 것처럼 FilterToBeanProxy애플리케이션의 web.xml배포 설명자에 필터 항목을 추가해야합니다 .

목록 1. web.xml에 서블릿 필터 추가

  AcegiTraining  contextConfigLocation /WEB-INF/applicationContext*.xml   Acegi Filter Chain Proxy  org.acegisecurity.util.FilterToBeanProxy   targetClass  org.acegisecurity.util.FilterChainProxy    ... ...  Acegi Filter Chain Proxy /j_acegi_security_check   Acegi Filter Chain Proxy /j_acegi_logout   Acegi Filter Chain Proxy *.action   Acegi Filter Chain Proxy *.jsp  ... 

FilterToBeanProxy초기화 매개 변수가 필요합니다 targetClass. 이 targetClass매개 변수는 응용 프로그램 컨텍스트에서 지정된 클래스의 첫 번째 개체를 찾습니다. 목록 1의 구성에서 해당 클래스는 org.acegisecurity.util.FilterChainProxy. 애플리케이션 컨텍스트의 관련 Bean 객체는 filterChainProxy입니다 (Listing 2 참조).

목록 2. filterChainProxy


    
     class="org.acegisecurity.util.FilterChainProxy"> ... 
    

목록 1은 Acegi 필터에 대한 여러 필터 매핑을 정의합니다. 대신 목록 3에 표시된 것처럼보다 일반적인 필터 매핑을 사용하여 벗어날 수 있습니다.

Listing 3. 일반적인 필터 매핑

 Acegi Filter Chain Proxy /* 

그러나 목록 3의 필터 매핑을 사용하면 각각의 모든 URL이 Acegi 필터에 의해 차단됩니다. 이제 필터는 보안을 원하지 않을 수있는 정적 리소스 (JavaScript, CSS, HTML 및 이미지)에 대한 권한 부여 세부 정보도 요청합니다. 특정 URL 패턴을 사용하여이 트랩을 피할 수 있습니다.

서블릿 필터를 배치 할 때 순서는 필수적입니다. 예제 응용 프로그램은 Acegi, JSP 및 SiteMesh에 대한 필터를 사용하기 때문에 Acegi 필터를 먼저 배치 한 다음 각각 JSP 및 SiteMesh 필터를 배치해야합니다.