본문 바로가기

오픈소스프레임워크/Spring

[Spring Security 3] 개요

인증(Authenticatio)은 시스템의 단일 사용자의 특정 신원을 확인하고 이 사용자를 식별가능한 엔티티와 매핑하는 과정을 말한다.

즉 인증은 애플리케이션의 사용자가 해당 사용자가 주장하는 본인이 맞는지 확인하는 절차를 말한다.

    - 크리덴셜 기반 인증: 사용자명과 비밀번호를 입력하여 로그인한다.

    - 이중인증: 은행의 경우 물리적인 카드에 저장된 정보와 사용자가 입력한 비밀번호를 조합하여 특정 계좌 

      에 대한 접근이 가능한지 판단한다.

    - 하드웨어 인증: 차에 시동을 걸때 키를 사용한다.


권한부여(Authorization)는 권한이 부여된 사용자들 특정 기능 또는 데이터에 접근을 허용하는 기능이다. 

권한부여 작업은 보안이 적용된 시스템의 접근성을 나타내기 위해 다음 두가지 서로 다른 작업을 의미한다.

    - 인증된 주체를 하나 이상의 권한에 매핑하는 일이다.

    - 보호된 리소스에 대한 권한 체크다. 


애플리케이션에서 권한부여 모델을 적용하려면,

   권한, 기능및 데이터, 사용자에 맞게 애플리케이션의 기능과 데이터 영역을 구분하는 작업이 필요하다. 


스프링 시큐리티 3을 사용하면,

- 시스템 사용자를 개별 사용자군으로 세분화한다.

- 사용자 역할에 따라 권한 부여 레벨을 부여한다.

- 사용자군에 사용자 역할을 부여한다.

- 애플리케이션 리소스에 대해 전역으로 인증규칙을 적용한다.

- 모든 애플리케이션 아키텍처 레벨에서 권한 부여 규칙을 적용한다.

- 사용자의 세션을 조작하거나 훔치려는 일반적인 공격을 차단한다.


스프링 시큐리티는 JAAS(Java Authentication and Authorization Service)나 Java EE Security도 물론 같은 인증 및 권한부여 기능들을 제공하지만 Top-to-Bottom 애플리케이션 보안 솔루션을 간편하고 합리적으로 구현할 수 있는 모든 기능들을 제공한다.