JWT 와 Session 시작하기에 앞서, 해당 글에서는 JWT에 대한 구조에 대해서는 자세하게 설명하지는 않도록 하겠습니다. 어느 정도 JWT에 대한 이해가 되신 분들이 해당 글을 읽고 어떠한 인증 전략을 가져가야 하는지 생각해보는 글이 되었으면 합니다. Session 기반 인증 Session 기반 인증이라고 하면서 서버에서는 user에 따른 Session ID를 생성 하고 해당 Session ID를 서버 리스트에 저장을 시켜 요청이 올 때 마다 유저를 인증하는 방식입니다. 위의 Sequence Diagram (이하 SD) 을 보면 Session 기반인증의 가장 큰 특징은 서버에서 저장을 하고 있다라는 것입니다. Token 기반 인증 토큰 기반 인증 방식은 Session과는 다르게 유저에 대한 인증 정..
HTTP vs HTTPS HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Secure)는 인터넷을 통해 데이터를 전송하기 위한 프로토콜입니다. 주요한 차이점은 보안과 암호화입니다. 보안: HTTP: HTTP는 평문 텍스트로 데이터를 전송하기 때문에 보안이 제공되지 않습니다. 데이터가 암호화되지 않기 때문에 도청이나 데이터 변조와 같은 공격에 취약합니다. HTTPS: HTTPS는 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용하여 데이터를 암호화합니다. 이를 통해 데이터의 기밀성과 무결성을 보호하고, 도청과 데이터 변조를 방지할 수 있습니다. 암호화: HTTP..
AccessDecisionManager 인증 정보, 요청정보, 권한정보를 이용해서 사용자의 자원 접근을 허용할 것인지 거부할 것인지 최종 결정하는 주체 여러 개의 Voter들을 가질 수 있으며, Voter들로부터 접근허용, 거부, 보류에 해당하는 각각의 값을 리턴 받고 판단 및 결정 최종 접근 거부시 예외시킴. 접근 결정의 세가지 유형 AffirmativeBased 여러 개의 Voter 클래 중 하나라도 접근 허가로 결론을 내면 접근 허가로 판단 ConsensusBased 다수표(승인 및 거부)에 의해 최종 결정을 판단한다 동수일 경우 기본은 접근허가이나 allowEqualGrantedDeniedDecisions를 false로 설정 할 경우 접근 거부로 결정. UnanimousBased 모든 보터가 만장..
Authorization 인증이 된 유저가 어떠한 자원에 접근할 시, 권한에 따라 허용 및 거절을 하는 것을 말함. 스프링 시큐리티가 지원 하는 권한 계층 웹 계층 URL 요청에 따른 메뉴 혹은 화면 단위 레벨 보안 (가장 많이 사용됨) 서비스 계층 화면 단위가 아닌 메소드 같은 기능 단위의 레벨 보안 도메인 계층(Access Control List, 접근제어목록) 객체 단위의 레벨 보안 FilterSecurityInterceptor 마지막에 위치한 필터로써 인증된 사용자에 대하여 특정 요청의 승인 또는 거부 여부를 최종적으로 결정 인증객체 없이 보호자원에 접근을 시도할 경우 AuthenticationException을 발생함 인증 후 자원에 접근 가능한 권한이 없을 경우 AccessDeneidExcep..
AuthenticationManager 인증을 요청하는 방식에 따라 그에 맞는 Provider에게 인증을 위임하는 클래스이다. Form 인증 요청시 ProviderManager가 provider중 인증처리를 할 수 있는지 확인 Form 인증을 담당하는 DaoAuthenticationProvider에게 인증을 위임. 인증이 되면 UsernamePasswordAuthenticationToken을 반환 받고 다시 UsernamePasswordAuthenticationFilter에게 넘김. RememberMe 인증요청시 ProviderManager가 provider중 인증처리를 할 수 있는지 확인 RememberMe 인증을 담당하는 RememberMeAuthenticationProvider에게 인증을 위임. 인..
SecurityContextPersistenceFilter SecurityContext 객체의 생성, 저장, 조회를 담당하는 Filter이다 익명사용자 새로운 SecurityContetxt 객체를 생성하여 SecurityContextHolder에 저장 AnonymousAuthenticationFilter에서 AnonymousAuthenticationToken 객체를 SecurityContext에 저장함. 인증 시 새로운 SecurityContetxt 객체를 생성하여 SecurityContextHolder에 저장 인증이 최종 완료가 되면 Session에 SecurityContext를 저장. 인증 후 Session에서 SecurityContext 꺼내어 SecurityContextHolder 에 저장 Sec..