5.Anyframe IAM Core

Anyframe IAM(Identity & Access Management) Core는 Spring Security Framework을 기반으로 인증 및 권한관리 기능을 제공한다. 현재 Anyframe IAM 에 적용된 Spring Security Framework의 버전은 2.0.4 이다.

IAM Core 는 Java EE 기반의 엔터프라이즈 어플리케이션을 위한 통합 보안 서비스(인증 및 권한관리)를 제공한다. 또한 Java EE 기반의 엔터프라이즈 어플리케이션 개발을 위하여 가장 널리 사용되는 Spring Framework 이나 Anyframe 기반의 프로젝트를 지원한다. 일반적으로 어플리케이션에 보안 기능을 추가하여야 하는 경우 어플리케이션 환경을 재구성하기 위한 일련의 제반 작업들이 수반되는데, 이는 개발 생산성 측면에서의 부담을 야기한다. 그러나 IAM Core 를 사용하면 이러한 최소화된 형태의 설정 작업을 통해 유연하고 강력한 보안 기능들을 사용할 수 있다.

5.1.공유 컴포넌트(Shared Components)

IAM Core 에서 핵심적인 컴포넌트들을 공유 컴포넌트(Shared Components) 라고 하며, IAM Core 의 핵심 기능들은 이러한 공유 컴포넌트들을 기반으로 동작한다. 공유 컴포넌트들은 기타 다른 컴포넌트들과의 결합을 통해 전체 구조를 표현할 수 있다. 그중에서도 가장 중요한 객체는 SecurityContextHolder 이다. 기본적으로 SecurityContextHolder 는 ThreadLocal 을 이용하여 어플리케이션의 보안 컨텍스트의 세부사항 및 인증 주체에 대한 세부 사항을 보관한다.

Spring Security 의 주요 공유 컴포넌트들은 다음과 같으며, 해당 컴포넌트에 대한 추가 정보는 본 문서의 Appendix A. Authentication / Authorization 및 Spring Security 의 공식 매뉴얼 (http://static.springsource.org/spring-security/site/docs/2.0.x/reference/springsecurity.pdf)을 참고하기 바란다.

  • SecurityContextHolder : SecurityContext 에 대한 모든 유형의 access 를 제공한다.

  • SecurityContext : Authentication 객체를 담고 있으며, 또한 request 에 특정한 보안정보를 유지 할 수도 있다.

  • HttpSessionContextIntegrationFilter : 웹 요청 간의 SecurityContext 를 HttpSession 에 저장한다.

  • Authentication : Spring Security 에 특정한 방법으로 인증주체를 표현한다.

  • GrantedAuthority : 인증주체에 대한 어플리케이션 범위의 권한을 나타낸다.

  • UserDetails : 어플리케이션의 DAO 를 사용하여 Authentication 객체를 작성할 수 있도록 필요한 정보를 제공한다.

  • UserDetailsService : String 기반의 username(또는 인증 ID, 일반적으로 userId 로 사용함)이 전달되었을 때 UserDetails 를 생성한다.

5.2.웹 어플리케이션의 인증 및 권한 처리 절차

일반적인 웹 어플리케이션의 인증 및 권한 처리 절차는 다음과 같다.

  • 1. 자원(img/html 등의 static 웹 리소스 또는 .do/jsp 등의 dynamic 웹 리소스) 요청

  • 2. 보호된 자원(secured resources)인지 판단

  • 3. 인증된 사용자인지 판단 -> 인증된 경우 다음 단계 진행 / 인증 정보가 없는 경우 인증을 위한 처리로 분기

  • 4. 아직 인증이 되지 않은 경우 로그인 페이지로 이동 (기존 요청 url 은 인증 성공 후 진행할 수 있도록 보관)

  • 5. 인증 메커니즘에 따라 사용자 로그인 (일반적으로 id/password 를 HTML Form 을 통해 post 방식으로 submit)

  • 6. 신원 정보(credential)가 유효한지 판단 -> 유효 시 다음 단계 진행 / 유효치 않을 시 에러 페이지 이동 또는 신원 정보 재요청(로그인 실패 정보 설정하여 로그인 페이지로 되돌아감)

  • 7. 해당 보호 자원에 대한 접근 권한이 있는지 판단 -> 있으면 보호 자원 제공 / 접근 권한 없을 시 Access Denied 에러 페이지로 이동

인증 및 권한 처리 절차에 대한 상세한 내용을 원할 경우 다음의 링크를 참조하면 된다.

5.3.Anyframe IAM Core 의 특징

  • 타겟 어플리케이션에 설치되어 인증 및 권한 처리 제어

  • DB 기반의 보호자원, 권한 맵핑 처리 제공

  • 런타임 보호자원-권한 맵핑 (Web Url, Restricted Times Roles/Resources) reload 기능 제공

  • 사용자 정의 viewResource 에 대한 Permission 체크 기능 제공

  • Anyframe IAM 의 DB Schema 를 사용할 수 없거나 JDK 1.4 환경인 경우 IAM Core 단독으로 적용 가능 cf.) 데이터 관리는 업무 프로젝트에서 대응해야 함