개발자의 오르막

[SpringSecurity] 스프링 시큐리티 개념 본문

SpringFrameWork/SpringSecurity

[SpringSecurity] 스프링 시큐리티 개념

계단 2021. 4. 1. 18:59

참조문서

- springsource.tistory.com/80

- sjh836.tistory.com/165

 

spring security 파헤치기 (구조, 인증과정, 설정, 핸들러 및 암호화 예제, @Secured, @AuthenticationPrincipal,

참조문서 https://docs.spring.io/spring-security/site/docs/4.2.7.RELEASE/reference/htmlsingle/#getting-started http://springsource.tistory.com/80 https://okky.kr/article/382738 1. 스프링 시큐리티란?..

sjh836.tistory.com

 

1. 스프링 시큐리티 정의


  스프링 시큐리티란 스프링 기반의 어플리케이션의 인증과 권한을 담당하는 프레임워크이다.
  매 요청마다 올바른 권한을 가진 사용자가 인증 절차를 확인하였는지에 대한 검증을 해준다.

  Spring Security 는 Filter 기반으로 동작하며 XML 을 따로 작성하지 않고, JAVA Bean 으로 컨트롤 할 수 있다.

 

 

https://springsource.tistory.com/80

 

위의 그림과 같이 스프링 시큐리티는 필터 기반으로 사용자의 요청을 전처리 하거나, 서버의 응답을
후처리 하는 방식으로 이루어진다.

 

 

https://springsource.tistory.com/80

 

위와 같은 Filter Chain 을 통해 각 필터에서 사용자의  Request 에 대한 권한과 인증 절차가

이루어지며, Request, Response 는 의도에 따라 전처리, 후처리가 진행된다.

위의 Filter 들에 대한 설정은 JAVA Bean 의 형태로 각 프로젝트에 맞게 Custom 을 진행할 수 있다.

 

 

 

 

 

 

2. 자동으로 설정되는 10개의 Spring Security Filter


1. SecurityContextPersistenceFilter

   : SecurityContextRepository 에서 SecurityContext 를 로딩하거나 SecurityContextRepository 로

     SecurityContext 를 저장하는 역할을 한다. SecurityContext 란 사용자의 보호 및 인증된 세션을 의미한다.

 

2. LogoutFilter

   : 로그아웃 URL로의 요쳥을 감시하며 해당 사용자를 로그아웃 시킨다.

 

3. UsernamePasswordAuthenticationFilter

   : 아이디와 비밀번호를 사용하는 폼기반 인증 요청 URL 을 감시하며 사용자를 인증하는 역할을 한다.

 

4. DefaultLoginPageGeneratingFilter

   : 폼 또는 OpenId 기반 인증을 위한 로그인폼을 감시하고 이와 관련된 로그인 폼을 생성한다.

 

5. BasicAuthenticationFilter

   : HTTP 기본 인증 헤더를 감시하여 처리한다.

 

6. RequestCacheAwareFilter

   : 로그인 성공 후, 원래 요청 정보를 재구성하기 위해 사용된다.

 

7. SecurityContextHolderAwareRequestFilter

   : HttpServletRequestWrapper 를 상속한 SecurityContextHolderAwareRequestWrapper 클래스로

     HttpServletRequest 정보를 감싼다. SecurityContextHolderAwareRequestWrapper 클래스는 필터

     체인 상의 다음 필터들에게 부가정보를 제공한다.

 

8. AnonymousAuthenticationFilter

   : 이 필터가 호출되는 시점까지 사용자 정보가 인증되지 않았다면 인증토큰에 사용자가 익명 사용자로

     나타난다.

 

9. SessionManagementFilter

   : 이 필터는 인증된 사용자와 관련된 모든 세션을 추적한다.

 

10. ExceptionTranslationFilter

   : 이 필터는 보호된 요청을 처리하는 중에 발생할 수 있는 예외를 위임하거나 전달하는 역할을 한다.

 

11. FilterSecurityInterceptor

   : 이 필터는 AccessDecisionManager 로 권한부여 처리를 위임함으로써 접근 제어 결정을 쉽게 해준다.

 

12. AbstractAuthenticationProcessingFilter

   : 웹 기반 인증요청에서 사용되는 컴포넌트로 POST 폼 데이터를 포함하는 요청을 처리한다.

     사용자 비밀번호를 다른 필터로 전달하기 위해서 Authentiaction 객체를 생성하고 일부 프로퍼티를 설정한다.

 

13. AuthenticationManager

  : 사용자 비밀번호를 인증하는 역할을 담당한다. 인증에 실패하면 예외를 던지기도 하고, 성공하면 Authentication

    객체의 모든 프로퍼티를 완성한다. 이렇게 Authentication 객체에 채워지는 값에는 권한 정보도 포함되어 있다.

 

14. AuthenticationProvider

  : AuthenticationManager 에게 비밀번호 인증기능을 제공하는 역할을 한다. 

    데이터베이스를 참조하여 비밀번호를 인증하기도 한다.

 

Comments