▼ Why ?오늘은 Spring Security에서 "세션(Session)을 기반으로 하는 인증"과 "JWT 토큰을 기반으로 하는 인증"의 차이점에 대해 알아보고 정리해보려고 ▼ 세션(Session) 기반 인증 Session 기반 인증/인가 처리 절차STEP 1: 사용자 인증 과정인증 요청 ➙ 인증 필터 ➙ 인증 관리자(AuthenticationManager) ➙ 사용자 세부 정보 로드 후 비교 ➙ 인증 완료 STEP 2: Session 생성 및 관리서버에서 앞선 인증에 성공하여 메모리에 사용자 정보를 저장하게 된다.➙ Spring Security는 해당 사용자를 위한 "HTTP Session"을 생성한다.➙ "Authentication 객체"를 담고 있는 사용자의 현재 "SpringContext"를 담..
▼ Why ?이번에 토이 프로젝트를 하면서 스프링 시큐리티 이용한 로그인을 구현하려고 하는데, 스프링 시큐리티에 대한 이해가 많이 부족하다고 느껴서 제대로 다시 공부해보려고 한다!▼ What ?Spring Security ArchitectureSpring Security의 세션(Session)을 기반으로 하는 인증(Authentication) 과정과 인가(Authorization) 과정주요한 Spring Security Filter▼ 스프링 시큐리티 구조(Spring Security Architecture) 인증(Authentication)과 인가(Authorization)가 뭐지 ? 인증(Authentication): 자신이 A라고 주장하는 사용자가 A가 맞는지 확인하는 것.인가(Authorizatio..
▼ 서블릿(Servlet) 서블릿(Servlet) ? 클라이언트(Client)의 요청을 처리하고 그 결과를 클라이언트에 반환해주는 프로그램. 동적 웹 페이지 서버에서 각 사용자의 요청을 하나의 스레드로 처리하는 자바(java) 웹 프로그램이다. html에 java 코드를 포함하고 있는 "JSP"와 달리 java 코드 내에 html을 포함하고 있다. 서블릿(Servlet)의 동작 (ex. 로그인 페이지) 사용자의 id/password를 담은 Http Request를 전송한다. Http Request를 받은 "웹 서버(WS)"는 해당 요청을 톰캣(tomcat) 같은 "웹 어플리케이션 서버(WAS)"에게 넘긴다. ( 위 그림에선 "웹 서버"가 생략됐다. ) HttpServletRequest와 HttpServl..
▼ What ? 객체지향 시스템을 설계할 때 '기능'과 '구조' 중 무엇에 중점을 두고 설계를 해야 하는지가 이번 여섯 번째 챕터의 발단이었다. 그래서 '구조'에 중점을 두고 설계를 할 때 필요한 '도메인(Domain)'이라는 개념이 무엇이며, '유스케이스(Use Case)'와 '도메인 모델(Domain Model)'이 '책임-주도 설계'와 어떠한 관련이 있는지에 대한 내용이 담겨있다. 쉽게 말해서 '책임-주도 설계'를 하기 전에 먼저 어떤 책임이 필요한지부터 생각해야 하는데, 그 생각해내는 과정에 대한 내용을 다루는 챕터라고 할 수 있다. ▼ Summory & Comment 이 챕터를 읽고 나서 기억에 남는 말 ! 안정적인 도메인 모델을 기반으로 시스템의 기능을 구현하라. 도메인 모델과 코드를 밀접하게..
▼ What ? 이 책의 마지막 챕터는 지금까지 다뤘던 이야기들을 종합하여 간단하게 풀어낸 내용을 담고 있다. 이전까지의 챕터들에서 다룬 내용들은 워낙 추상적이다보니 지금까지 매 스터디마다 그러한 내용들을 코드에 대입해서 생각해보는 시간을 가졌다. 나름 다같이 적절하다고 생각하는 방향으로 생각을 정리하긴 했지만, 그럼에도 모호했던 부분들이 꽤 있었어서 스터디가 끝나고도 혼자 생각해보기도 하고 심적으로도 찝찝한 부분이 있었다. 저자가 마지막 챕터에서 그러한 모호한 내용들을 마지막 챕터에서 자바(java) 코드를 통해 직접 짚어주니 당시에 이해했던 내용을 되돌아볼 수 있어서 이 북 스터디를 홀가분한 마음으로 마무리해볼 수 있을 것 같다. (추가적으로 이번 챕터 뒤에 "추상화"에 대해 다룬 부록이 있는데 이 ..
▼ What ? "악쓰는하마"라는 노래방 키오스크의 백엔드 서비스를 만들어보는 토이 프로젝트를 하기 전에 일단 스프링 부트의 패키지 구조에 대해 공부해보고, 계층형 구조와 도메인형 구조 중 어떤 구조에 따라 해당 프로젝트를 진행해야 할지도 함께 생각해보려고 한다. ▼ 스프링 부트 패키지 구조 MVC 패턴에 따른 스프링에서의 흐름 클라이언트(~View)에서 서버로 요청을 보낸다. 요청을 받은 Controller에서 '비즈니스 로직'에 해당하는 Service에 요청을 보낸다. Service에서 요청받은 비즈니스 로직을 처리하는데, 그 과정에서 DB에 저장된 데이터가 필요하다면 DAO(~Repository)를 통해 DB에 접근해야 한다. (이전까진 DTO를 통해 계층 간의 요청/응답이 이루어진다.) DAO는 ..