728x90
반응형

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns              = "http://www.springframework.org/schema/security"
    xmlns:beans                      = "http://www.springframework.org/schema/beans"
    xmlns:xsi                           = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation            = "http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">
 
 <http auto-config = "true">
  <!-- intercept-url은 여러개 정의 가능.. 위에서부터 적용
    access 속성은 접근할수 있는 사용자 권한을 말한다. -->
  <intercept-url pattern="/*" access="ROLE_USER"/>
 </http>
 
 <!-- 인증요청을 처리하기 위해 authentication manager 가 xml 명시된 사용자 정보를 사용한다. -->
 <authentication-manager alias="authenticationManager">
  <authentication-provider>
   <!-- user-service 사용자정보를(id,암호,권한) 얻어오는 서비스 -->
   <user-service>
    <user name="guest" authorities="ROLE_USER" password="guest"/>
   </user-service>
  </authentication-provider>
 </authentication-manager>
    
</beans:beans>

728x90
반응형

'Web Programming > spring' 카테고리의 다른 글

Spring DI 란  (0) 2018.08.29
Spring 프레임워크 란  (0) 2018.08.29
Spring MVC 패턴 / 프로젝트 생성 / 파일 구조  (0) 2018.08.29
web.xml 설정추가  (0) 2013.09.24
Spring Security란?  (0) 2013.09.24
728x90
반응형

1. Spring Security탄생 배경

 

Acegi 라고도 하는 Spring Security 프로젝트는 Ben Alex가 1990년대 초 처음 bbs(bulletin board system) 프로젝트를 했을 때 알파벳의 1,3,5,7,9를 따서 Acegi라고 지었던 것을 2003년에 로드존슨에게 지금의 Spring security 프로젝트의 zip파일을 보여주며 제안 했는데 너무 바빠서 제대로 검토를 못해보고 xxx security System for Spring으로 이름 지어야 해서 그때의 이름을 따서 지었다고 한다. 지금은 Spring Security로 이름도 바뀌었다.


2.  Spring Security란?

Spring Security는 J2EE 기반의 엔터프라이즈 소프트웨어 애플리케이션에 대한 포괄적인 보안 서비스를 제공한다. 특히 엔터프라이즈 소프트웨어 개발을 주도하고 있는 J2EE 솔루션인 Spring 프레임워크를 이용하여 개발되는 프로젝트를 지원한다는 장점이 있다.

사람들이 Acegi Security를 사용하는 이유는 여러 가지가 있는데, 대부분의 J2EE의 서블릿 스펙이나 EJB 스펙이 일반적인 엔터프라이즈 애플리케이션 시나리오에서 필요로 하는 수준의 기능이 부족하다는 것을 깨닫고 난 이후의 프로젝트에서부터 사용한다. 이러한 것들이 표준으로 언급되고 있기는 하지만, 이러한 표준들이 WAR나 EAR 차원의 이식성을 갖추고 있지 않다는 것을 인식하는 것이 중요하다. 그러므로 만약 여러분이 서버 환경을 교체한다면 보통 여러분이 개발한 애플리케이션의 보안 관련 설정들을 새로운 대상 환경에 맞게 재구성하기 위해 해야할 일들이 많을 것이다. Acegi Security를 사용하면 이러한 문제들을 극복할 수 있으며, 게다가 갖가지 다른 유용하고 완전히 조정가능한 보안 기능들을 사용할 수 있다.

보안을 구성하는 주요 오퍼레이션에는 인증과 권한부여가 있다. 인증은 인증주체(principal)가 누구라는 것을 주장하는 과정이다. 인증주체(principal)는 일반적으로 여러분의 애플리케이션에서 특정한 행위를 수행할 수 잇는 사용자나, 디바이스 혹은 다른 시스템을 의미한다. 권한부여(authorization)는 인증주체가 여러분의 애플리케이션에서 특정 행위를 수행하도록 허가되었는지를 결정하는 과정을 의미한다.

이런한 인증 차원에서 보았을 때 Acegi Security는 광범위한 인증 모델을 지원한다. 이러한 인증 모델들의 댇다수는 써드 파티에서 제공하거나, 아니면 IETF(Internet Engineering Task Force)와 같은 관련 표준 단체에 의해 개발된다. 더불어 Acegi Security는 독자적인 인증 기능을 제공하고 있는데, 구체적으로 말하자면 현재 아래에 나열되어 있는 인증 모델들을 모두 지원한다.

  -  HTTP BASIC 인증 헤더(IETF RFC 기반 표준)

  - HTTP Digest 인증 헤더(IETF RFC 기반 표준)

  - HTTP X.509 클라이언트 인증서 교환(IETF RFC 기반 표준)

  - LDAP(교차 플랫폼, 특히 여러 환경에서 인증을 해야 할 필요가 있을 경우의 가장 일반적인 접근법)

  - 폼 기반 인증(단순한 사용자 인터페이스 요구사항에 적합)

  - Computer Associates Siteminder

  - JA-SIG 통합 인증 서비스(JA-SIG Central Authentication Service)(CAS로도 알려져 있는 대중적인 오픈 소스 싱글 사인 온(single sign on) 시스템)

  - RMI(원격 메소드 호출) 및 HttpInvoker(Spring 원격 프로토콜)에 대한 투명한 인증 컨텍스트 전달

  - 자동 “remember-me” 인증(미리 정의되어 있는 시간 동안 재인증을 수행할 필요가 없음)

  - 익명인증(모든 요청이 자동적으로 일정한 보안 식별성을 지니고 있다고 가정하게 함)

  - Run-as 인증(만약 누군가가 다른 보안 신원을 이용하여 진행해야만 하는 요청에 유용)

  - 자바 인증 및 권한 부여 서비스(JAAS; Java Authentication and Authorization Service)

  - JBoss, Jetty, Resin, Tomcat과의 컨테이너 통합(원한다면 컨테이너 관리인증을 그대로 사용할 수있음)

  - 기타 독자적인 인증 시스템

3. Spring Security 컴포넌트

Acegi Security은 네 개의 주요 컴포넌트 유형으로 구성된다. 필터, 매니저, 프로바이더, 핸들러가 그것이다.

· 필터
 이 컴포넌트는 인증 프로세싱, 세션 핸들링, 로그아웃 같은 일반적인 보안 서비스를 제공한다.

· 매니저

 필터는 보안 관련 기능의 고급 추상화일 뿐이다. 매니저와 프로바이더는 인증 프로세싱과 로그아웃 서비스를 실제로 구현하는데 사용된다. 매니저는 다양한 프로바이더가 제공한 저급 보안서비스를 관리한다.

· 프로바이더

 다양한 프로바읻는 디렉토리 서비스, 관계형 데이터베이스, 인-메모리 객체 같은 다양한 유형의 데이터 스토리지 서비스와 통신할 수 있다. 사용자 베이스와 액세스 컨트롤 정책들을 이 중 어떤 데이터 스토리지 서비스에도 저장할 수 있고, Acegi의 매니저가 런타임 시 적절한 프로바이더를 선택할 수 있다.
· 핸들러
 태스크들은 가끔 여러 단계들로 나뉘며, 각 단계는 특정 핸들러에 의해 수행된다. 예를 들어, Acegi의 로그아웃  필터는 두 개의 핸들러를 사용하여 HTTP 클라이언트를 로그아웃 한다. 한 개의 핸들러는 사용자의 HTTP 세션을 무효화 하고, 또 다른 핸들러는 사용자 쿠키를 파기한다. 여러 핸들러가 있으면 유연해 지고, 애플리케이션 요구 조건에 따라서 Acegi를 설정할 수 있다. 맞는 핸들러를 선택하여 애플리케이션을 보안화 하는데 필요한 단계를 수행한다.

728x90
반응형

'Web Programming > spring' 카테고리의 다른 글

Spring DI 란  (0) 2018.08.29
Spring 프레임워크 란  (0) 2018.08.29
Spring MVC 패턴 / 프로젝트 생성 / 파일 구조  (0) 2018.08.29
web.xml 설정추가  (0) 2013.09.24
spring-security xml 설정  (0) 2013.09.24

+ Recent posts