작성
·
1.3K
1
Rest api에서 세션 인증 방식을 사용한다고 할때,
이와 관련해서 몇몇 질문사항이 있습니다.
1. 세션의 저장
- 별도의 세션 레포지토리를 구성하고, 클라이언트의 요청이 올때 세션 레포지토리로부터 유저의 정보 조회해야 하는지
- 톰켓이 세션 저장소를 보유? 해서 request.getSession & session.getAttribute 사용
2. 로그인 당시 응답
- 클라이언트한테 response에 세션 아이디를 같이 넣어서 보내줘야 하는지
- 그럴 필요없이 톰켓이 세션 내부 저장소를 가져, 항상 세션 아이디를 보내주는지
postman으로 테스트 해볼때는 sessionId를 쿠키(postman이 가지고있는?)에 저장해서 보관하고
이 값을 갱신해주기 전까지는 같은 값을 보유하고 있는데
세션을 별도로 저장하고 응답으로 주어야 하는지, 그럴 필요가 없는지 헷갈려서 질문드립니다.
3. 예를 들어 유저가 상품을 구매하는 request를 rest api를 통해 날리면,
백엔드와 프론트엔드가 통신할때 userId 혹은 username으로 회원의 정보를 보내는게 아니라,
sessionId(인증에 필요한 정보, 토큰이던지)와 상품 정보를 보내주고,
백엔드에서는 세션 id를 통해 세션 저장소에 저장되어있는 유저의 정보를 얻고,
이를 기반으로 상품 구매 처리를 해야 할 것 같은데,
이 경우 강의에서 말씀하신대로 여러 유저의 요청이 많은 경우, 서버에 부하가 오는 것 같아 별로인 것 같기도합니다.
그래서 어떻게 처리하는게 맞는지 더 헷갈리는 것 같습니다.
이렇게 처리하는 방식으로 하는게 맞는 지 ( 세션이나 jwt 토큰을 사용할 경우) 궁금 합니다.
- 이게 맞다면, 모든 컨트롤러에서 매번 세션 레포지토리를 조회해야하는데 번거로운걸 보니 맞는 방법이 아닌것 같고요..
- Config에 bean으로 세션 체크하는 로직을 등록해서 사용하는 방법을 채택할수도 있는것 같고, 리턴값으로 적어도 회원의 아이디는 줘야 하니
4. 또한 jwt 토큰 방식으도 있어
스프링 시큐리티를 사용하지 않고 구현을 해보고 싶은데
이 경우에는 jwt 토큰 레포지토리를 구성해서 해보는게 맞는지 궁금합니다.
정확한 답이 아니라, 어떤걸 찾아보면되는지 힌트 방식이여도 좋으니 알려주시면 감사드리겠습니다.
답변 1
2
안녕하세요. 유승현님
Q1, Q2
REST API도 결국 HTTP 요청과 응답입니다.
따라서 이 강의에서 학습한 내용처럼 API 요청시 세션id가 쿠키로 전달됩니다.
그리고 강의에서 설명드린 것 처럼 세션 저장소는 톰캣이 제공하고 관리합니다.
서버 개발자는 해당 내용을 가져다가 사용하기만 하면 됩니다.
Q3: sessionId(인증에 필요한 정보, 토큰이던지)와 상품 정보를 보내주고,
백엔드에서는 세션 id를 통해 세션 저장소에 저장되어있는 유저의 정보를 얻고,
이를 기반으로 상품 구매 처리를 해야 할 것 같은데,
이 경우 강의에서 말씀하신대로 여러 유저의 요청이 많은 경우, 서버에 부하가 오는 것 같아 별로인 것 같기도합니다.
유저 요청이 많아도 이렇게 처리하는 것이 맞습니다. 실제 대부분의 서버가 이렇게 처리합니다.
Q4: JWT로 구성하셔도 됩니다. 단 JWT를 충분히 공부하시고 선택하셔야 합니다.
감사합니다.