Cookie/Session & Token (feat. token 주의 사항)

Web 2023. 1. 31. 00:48

HTTP 통신의 특징 중 하나는 바로.. stateless 하다는 것이다. 즉, 서버에 클라이언트의 상태를 저장하지 않는다는 특징이 있다. 그러면.. 로그인은 어떻게 처리할 수 있을까.. 우리 눈에는 웹 페이지를 넘기면서 로그인이 유지되는 것 처럼 보이는데 말이다.. 그래서, 서버에는 클라이언트의 상태를 저장하지 않고 동시에 로그인을 유지하려면... 클라이언트는 서버에게 내가 로그인한 상태라는 것을 지속적으로 알려줘야한다. 이때, 사용되는 기술이 cookie/session 방식과 token 방식이 있다. cookie는 stateless 한 서버를 보완하기 위해 클라이언트에서 내가 누군지 식별하기 위해 서버에 계속 보내는 정보이다. Cookie/Session 방식에 대해 알아보기 전에.. Cookie 방식..

Spring MVC 마스터하기 쿠키, 세션 3

Spring/MVC 2022. 5. 29. 22:53

서블릿은 세션 기능을 개발자를 위하여 이미 제공하고 있다. HttpSession 직전 포스팅의 SessionManager와 비슷한 기능을 담당하지만.. 실제 설계 내용은 많이 다른것 같다. HttpSession이 생성되면, 클라이언트와 서버간의 Cookie가 생성되고 key는 JSESSIONID value는 추정불가능한 임의의 값이다. SessionManager 1개 WAS에 1개 세션(세션 저장소, SessionManager) 여러 클라이언트가 동일한 세션을 바라본다. -> 쿠키에는 mySessionId:임의의 값으로 들어간다. -> SessionManager에는 임의의 값이랑 loginMember(member 객체) 가 매핑될 수 있는 메모리 테이블이 존재한다. -> HttpSession과 구조가 달..

Article Thumbnail
Spring MVC 마스터하기 쿠키, 세션 2

Spring/MVC 2022. 5. 29. 20:15

쿠키, 세션 1 포스팅에서 로직은 문제가 있다. 클라이언트와 서버간 전송되는 쿠키에는 memberId가 포함되어 전송된다. 해당 쿠키는 중요한 정보이므로 .. 해당 정보를 전송하는 일은 없어야 하며, 쿠키에 시간제한을 두어 일정 시간이 지나면 다시 재사용 불가능하도록 만들어야 한다. 중요한 정보를 전송하지 않고 쿠키를 이용하여야 한다. -> 추정이 불가능한 임의의 값으로 연결 해야 한다는 말이다. -> 서버에 중요한 정보를 놔두고 임의의 값으로 매핑시켜 연결을 유지 -> 이러한 방법을 세션이라 부른다. 그림으로 알아보자.. 위와 같이 세션 저장소를 서버에 놔둔다. -> 쿠키로 사용할 임의의 값과 중요한 정보를 매칭 시킬 수 있는 테이블 (메모리 영역) 클라이언트가 쿠키를 보내면 서버는 해당 쿠키(임의의 ..

Article Thumbnail
Spring MVC 마스터하기 쿠키, 세션 1

Spring/MVC 2022. 5. 29. 19:38

쿠키 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달. -> 앞으로 브라우저는 서버로 요청 할 때마다 해당 쿠키를 계속 전달한다. -> 서버로 로그인 했다는 것을 알려준다. -> 로그인 상태를 유지하기 위함이다. 영속 쿠키 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키 만료 날짜를 생략하면 브라우저 종료시 까지 유지 로그인 기능을 개발해보자 위 예시는 쿠키를 만들어 응답으로 내려주는 예시이다. 만료 날짜를 생략 했기 때문에 세션 쿠키이다. 로그인 성공 시.. HttpServletResponse에 addCookie 메서드를 통하여 key, value 형태로 이루어진 Cookie를 추가하였다. -> 쿠키를 받은 클라이언트는 요청때 마다 쿠키를 보낼 것이다. 로그인 실패 시.. ..

Article Thumbnail