본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


반응형

분류 전체보기

(160)
스프링시큐리티 공부 11 - 로그인 유지 (session과 remberme cookie) 스프링이 지원하는 로그인 방식들 중에 자주 사용하는 4가지 - 폼 로그인 (UsernamePasswordAuthentication 사용 하여 서버사이드 랜더링에서 폼 전송 방식으로 로그인) - ajax 로그인 (Basic Authentication을 사용하여 SPA 또는 모바일 환경에서 요청 헤더에 토큰을 담아서 로그인하는 방식(헤더에 직접 아이디 비밀번호를 담기 때문에 보안에 취약)) - OAuth2 로그인 (OAuth2 규약에 따라 만들어진 로그인 API에 로그인을 위임하는 방식) - JWT 토큰 로그인 ( SPA , 모바일 환경에서 JWT(Json Web Token)을 생성하여 인증하는 방식 ) 그 외 :saml2(인증 정보가 담긴 xml를 넘겨서 인증하는 방식) 로그인 이 중 폼 로그인 , 혹은 ..
스프링시큐리티 공부 9 - multi filter chain 구현 하이브리드 앱이란 한 어플리케이션에서 모바일 환경과 웹 환경을 모두 응답해 줄 수 있는 어플리케이션이다 . 하이브리드 앱은 모바일 환경이나 SPA 같은 경우에는 API를 내려줘야 하고 웹 환경에서는 페이지를 내려줄 수 있도록 해줘야 한다. 스프링 시큐리티은 모바일 혹은 SPA 환경에서 BasicAuthenticationFilter를 사용하여 인증을 하고 , 웹 환경에서는 UsernamePasswordFilter를 이용하여 인증을한다. 이번에는 한 어플리케이션에서 이둘을 함께 구현하는 방법을 알아보려 한다. 일단 두가지 환경의 Filter chain에 대해 설정할 config 파일을 만들어 줬다 . 선생님이 관리하는 학생들의 정보를 출력해주는 view 와 api를 처리하는 로직을 만들어서 하이브리드 앱을 ..
스프링시큐리티 공부 8 - BasicAuthenticationFilter BasicAutheticationFilter SPA 기반의 페이지 같은 경우 클라이언트 브라우저에서는 서버 사이드렌더링과는 다르게 프런트단에서 뷰를 책임진다. 서버에서 페이지를 리다일렉션 시키면서 페이지가 이동되는 것이 아니기 떄문에 SPA기반 페이지에서 스프링 시큐리티 로그인을 구현하 기 위해선 BasicAutheticationFilter를 사용해야한다. 그 밖에도 하이브리드앱 (브라우저 기반의 모바일 앱) 같은 경우에도 BasicAutheticationFilter 혹은 JWT(JSON WEB TOKEN)기반의 인증방식을 사용한다. 스프링 시큐리티 config 파일에서 configure(HttpSecurity http) 메서드에서 httpBasic()을 enable설정하여 BasicAuthenticat..
스프링시큐리티 공부 6 - RoleHierarchy, authenticationDetailsSource 설정하기 1. RoleHierarchy 롤에 계층을 줄 수 있도록 해주는 클래스이다 빈으로 등록하면 유저의 role에 따라 지정해놓은 계층 구도가 적용된다 코드로 알아보자 부등호로 롤의 계층을 표현할 수있다 예를 들어 ROLE_A > ROLE_B > ROLE_C 로 설정해두면 ROLE_A는 B,C의 모든 권한을 갖을 수 있다 . 사용해 보자 스프링 시큐리티 config 파일에 정의해 두었다 . RoleHierachy는 인터페이스고 RoleHierachyImpl 은 구현체이다 . RoleHierachyImpl을 생성해서 Hierarchy를 등록해 주고 리턴한다. 해당 메서드를 빈으로 등록해 두면 스프링이 인식하여 다른 설정없이 동작한다 . 2.authenticationDetailsSource 셋팅하기 authent..
스프링시큐리티 공부 5 - form 로그인 1 1. 스프링 시큐리티 form 로그인 동작방식 스프링 시큐리티에서 폼 로그인 처리를 담당하는 필터는 UsernamePasswordAuthenticationFilter 이다. - POST/loging에 대한 요청을 처리한다 . processingUrl을 변경하면 주소를 바꿀 수 있다. - form 인증을 처리해주는 필터로 스프링 시큐리티에서 가장 일반적으로 쓰인다 UsernamePasswordAuthenticationFilter에 대한 설정은 스프링 시큐리티 설정파일의 configure(HttpSecurity http) 메서드 안에서 설정해 줄 수 있다 . 파라미터로 들어오는 HttpSecurity 타입인 http에 .을 찍으면 여러 필터들에 대한 설정할 수 있게 해주는 메서드들이 있는데 그 중에 http..
스프링시큐리티 공부 4 - 스프링 시큐리티에서의 로그인 스프링 프레임워크에서 로그인을 한다는 것은 authenticated 가 true 인 Authentication 객체를 SecurityContext에 갖고 있는 상태를 말한다. 단 .Authentication이 AnonymouseAuthenticationToken이 아니여야 한다. Authentication 의 기본 구조 security filter chain 의 몇몇 필터는 authentication을 제공하는 역할을 한다 이를 authenticationProvider 라고 하며 , authenticationProvider는 한개 이상이 존재할 수 있고 authenticationProvider는 하나의 authenticationManager 참조하고 이를 통해 관리된다. ProviderManager는 a..
스프링시큐리티 공부 3 - 스프링 시큐리티 작동방식 로그인 및 유저 추가를 해봤는데 어떻게 스프링 시큐리티가 작동하는 지에 대해서 알아보자 servlet container 서버가 여러개의 서블릿을 담고 있기 떄문에 서블릿 컨테이너라 한다. 1. 클라이언트 요청으로부터 서블릿을 생성하고 초기화한 후( init() )에 2. service() 메소드를 호출하여 servlet이 브라우저의 요청을 처리하도록하고 3. HTTP 메서드 (get, post)를 처리하는 doGet() ,doPost()을 호출한 후에 응답이 완료 될때 Servlet객체를 제거한다 (destroy()) 많이 사용하는 톰캣도 서블릿 컨테이너다 톰캣의 경우 Servlet객체를 생성하고 이미 생성된 Servlet객체를 메모리에 캐싱함으로써 다음번 요청에 대해 캐싱된 서블릿 객체를 반환하며 톰캣..
스프링시큐리티 공부 2 - 사용자 추가 이전 시간에 application.yml 에 사용자를 추가하여 로그인을 해봤다. 테스트를 위해서 여러명을 등록해 두고 싶다면 Security 설정파일인 SecurityConfig에 유저를 설정해 놓을 수 있다. ackage com.sp.fc.web.config; import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMeth..

반응형