springsecurity 7

24.SpringSecurity 필터, 아키텍쳐 정리

Spring Security Initalization 2개의 WebSecurityConfigurerAdapter 상속클래스가 있다고 가정한다. 설정클래스에서 정의한 여러 API 들을 정의 API에 맞는 클래스에서 Filter Type Bean을 생성 Filter Type Bean 들을 생성하는 클래스는 HttpSecurity ( 각각의 설정클래스의 Filter Type Bean 명단은 SecurityFilterChain의 Filters 필드에 저장 되는 것 기억 ) HttpSecurity의 Filter Type Bean(Filters) 들은 WebSecurity 객체에 저장 됨 WebSecurity의 FilterChainProxy 객체 생성시 FilterChainProxy의 생성자에 SecurityFil..

22.Authorization, FilterSecurityInterceptor

Authorization 무엇이 허가되었는지 증명하는 것이다. SpringSecurity 는 Authentication 과 Authorization 으로 영역을 나눈다. Authentication 영역에서는 사용자가 자원에 접근하기위해 Request 를 보낼 때 인증 여부를 확인한다. Authorization 영역에서는 인증이 완료 된 후 사용자가 특졍 자원에 접근할 때에 사용자의 권한이 특정 자원의 접근 권한에 충분하는 지의 심사를 한다. SpringSecurity 가 지원하는 권한 계층 웹 계층 : Presentation Tier 의 URL 요청 단위 레벨 보안 서비스 계층 : Service Tier 의 메서드 단위 레벨 보안 도메인 계층(Access Control List, 접근 제어 목록) : P..

20.AuthenticationMananger를 구현한 ProviderManager

ProviderManager 는 AuthenticationManager 의 구현객체이다. 동작 구조 인증을 요구하는 Filter( UsernamePasswordAuthenticationFilter, RemeberMeAuthenticationFilter...) 에서 인증 요청을 받게되면 AuthenticationProvider의 구현체인 ProviderManager가 작동 ProviderManager 는 해당 인증방식 (Form Login, Remember Me , Oauth..) 에 따라서 자신이 가지고 있는 AuthenticationProvider 중 알맞은 AuthenticationProvider 를 찾는다. (DaoAuthenticationProvider , RememberMeAuthenticati..

14.DelegatingFilterProxy, FilterChainProxy

DelegatingFilterProxy Filter는 Servlet 2.3 이상부터 적용된 기술이다. Spring 에서 필터가 동작한다는 것은 SpringContext 안에 Filter들이 있다는 뜻이된다. 하지만 Filter 는 ServletContext에 존재해 영역이 다르다. 결국 Filter는 스프링 기술이나 Bean을 Injection 받을 수 없다. 이렇게 각자 영역이 다른 상태에서 Servlet Spec 에서 사용되는 Filter를 사용할 수 있게끔 하는 것이 DelegatingFilterProxy 이다. DelegatingFilterProxy 의 작동원리 SpringBean 이 Filter를 상속한다. 이는 Filter Type Bean을 의미한다. DelegatingFilterProxy ..

13. 사이트 간 요청위조 : CSRF, CsrfFilter

CSRF( Cross Site Request Forgery ) 사이트 간 요청 위조 공격 사용자가 인증을 완료하여 서버에서 JSESSIONID를 받급 받는다. 공격자는 이메일과 같은 방법으로 링크를 사용자에게 전달 사용자가 링크를 여는 즉시 사용자의 브라우저는 이미지파일을 로딩하기위해 img 태그의 src 속성 값으로 서버 주소, 공격자의 주소 값으로 요청을 보낸다. 결국 인증된 사용자의 브라우저로 요청이 가므로 서버는 쿠키를 검사하고 인증된 사용자로 판단 사용자는 승인, 인지 없이 공격자의 배송지가 등록됨으로 공격이 완료된다. Form 인증 - CsrfFilter SpringSecurity 는 모든 Request 에 대해 랜덤하게 생성된 CsrfToken 을 HTTP Prameter 로 요구한다. Re..

3.Form Login 인증

Form 인증의 과정은? 클라이언트가 자원접근 시도 서버의 자원접근 보안정책에 맞지않으면 로그인페이지로 리다이렉트 POST 방식으로 로그인 인증시도 SpringSecurity가 세션 ID를 생성 , 인증결과를 담은 인증(Athenciation) 객체를 생성, SecurityContext 객체를 생성하여 인증객체를 담고 SecurityContext 객체를 Session에 담아보낸다. 이후 접근에는 SpringSecurity가 Session에서 인증토큰 존재여부를 확인하여 자원접근을 결정함 Form 인증 방식의 API들은 무엇인가요? Form Login 인증 API http.formLogin() : Form 로그인 인증기능 작동 formLogin()의 하위 API들 loginPage(url) : 사용자 정의..

1.스프링 시큐리티와 의존성 추가시에 일어나는 일들.

보안설정 API 와 연계된 Filter들에 대해 학습 각 API의 개념, 기본적인 사용법, API 처리과정, API 동작방식 학습 API 설정 시 생성 및 초기화 되어 사용자의 요청을 처리하는 Filter를 학습한다. SpringSecurity 내부 아키텍쳐 , 각 객체의 역할 및 처리과정을 학습 초기화 과정 , 인증 과정, 인가 과정 등을 아키텍쳐적 관점으로 보자 org.springframework.boot spring-boot-starter-security 의존성 추가시 일어나는 일들 서버 기동시 SpringSecurity의 초기화 작업 및 보안작업이 이루어진다. 별도의 설정이나 구현을 하지않아도 기본적인 웹 보안 기능이 현재 시스템에 연동되어 작용한다. 모든 요청은 인증이 되어야 접근가능하다. 인증..