본문 바로가기
Spring공부/4-스프링시큐리티

Spring Web Security를 이용한 로그인처리

by 으노으뇨 2021. 10. 18.
728x90
반응형
SMALL

개요

거의 대부분 웹 기반의 프로젝트에서는 사용자의 권한이나 등급에 기반을 두는 로그인 체크를 이용한다.

웹에서는 기본적으로 쿠키를 이용하거나 세션을 이용하는 방식이 일반적이다. 

스프링에서도 이를 활용할 수 있는 방법은 Interceptor등을 이용해서 처리 할 수 있다.

앞으로는 이러한 처리를 스프링 웹 시큐리티를 이용해서 처리하고자한다.

스프링 시큐리티를 이용하면 다음과 같은 작업을 간편히 처리할 수 있다.

  • 로그인 처리와 CSRF토큰 처리
  • 암호화 처리
  • 자동로그인
  • JSP에서의 로그인 처리

Spring Web Security란?

스프링기반의 어플리 케이션의 보안을 담당하는 스프링 하위 프레임워크

스프링 시큐리티 기본 동작 방식은 서블릿의 여러 종류의 필터와 인터셉터를 이용해서 처리된다.

필터는 서블릿에 말하는 단순한 필터를 의미하고, 인터셉터는 스프링에서 필터와 유사한 역할을 한다.

필터와 인터셉터는 특정한 서블릿이나 컨트롤러의 접근에 관여한다는 점에서 유사하지만, 결정적인 차이를 구분짓자면,

필터는 스프링과 무관하게 서블릿 자원이고, 인터셉터는 스프링의 빈으로 관리되면서 스프링의 컨텍스트 내에 속한다.

즉, 필터는

일반 필터로, 현재 실행되는 서블릿컨텍스트에 속하긴 하지만, 스프링과 무관!

인터셉터는,

스프링 내부에서 컨투롤러를 호출할 때 관여하기 때문에 스프링의 컨텍스트 내에 있는 모든 자원 활용 가능

스프링 시큐리티를 이용하게 되면 위와 같이 인터셉터와 필터를 이용하면서 별도의 컨텍스트를 생성해서 처리된다.

용어정리

보안 : 위험, 손실 , 범죄가 발생하지 않도록 방지하는 상태를 가리킵니다. 일반적으로 보안의 피해발생의 원인이 인간의 행위라는 점에서 안전이라는 개념과 구분됩니다.

접근주체(Principal): 보호된 리소스에 접근하는 대상

인증(Authentication) : 애플리케이션의 작업을 수행할 수 있는 주체(사용자)라고 주장할 수 있는것을 말합니다.

인증의 방식

  • 크리덴셜 기반 인증 : 사용자명과 비밀번호를 이용한 방식
  • 이중인증 : ATM을 이용할 때처럼 물리적인 카드와 사용자가 입력한 개인정보를 조합하는 방식
  • 하드웨어 인증 : 자동차 키와 같은 방식

인증과 인가
일반 사원인 김사원과 재무팀의 박부장은 사내 모든 직원들의 급여명세서를 열람하고 싶어한다. 먼저 시스템에 로그인을 하면 인증관리자(인증을 처리함)는 사용자가 제시한 정보를 통해 사용자가 누구인지를 확인한다. 다음으로, 접근결정 관리자는 사용자가 가지고 있는 역할을 가지고 급여명세서에 접근할 수 있는지 아닌지를 판별하게 된다.

인가(Authorize): 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정(After Authentication)

권한: 권한은 인증된 주체가 어플리케이션의 동작을 수행할 수 있도록 허락되있는지를 결정하는것을 말합니다. 따라서 권한 승인이 필요한 부분으로 접근하려면 인증 과정을 통해 주체가 증명 되어야만 한다는 것을 의미합니다.

역할부여란?

인증을 통해서 인증된 주체를 하나 이상의 권한(역할)에 매핑하고 보호된 리소스에 대한 권한을 체크하는 것을 말한다.

필터

스프링 시큐리티에서 웹 애플리케이션에 주로 영향을 주는 방식은 일련의 ServletRequest 필터를 사용한 방식이다. 필터들이 애플리케이션에 대한 모든 요청을 감싸서 처리한다. 스프링 시큐리티에서 여러개의 필터들은 아래 그림과 같이 체인형태를 이루면서 동작한다. 자동 설정 옵션을 사용하면 10개의 스프링 시큐리티 필터가 자동으로 설정된다.

 

728x90
반응형
LIST

댓글