728x90
Session & Cookie
session이란 사용자가 어플리케이션에 로그인을 했을 때 사용자의 정보를 일정 시간동안 저장하는 서버의 저장공간입니다.
Cookie 서버에서 생성한 사용자 식별정보를 Client에게 응답으로 주고 Client가 요청을 보낼 때마다 Cookie와 함께 보내서 사용자의 인증을 하는 방식에서 사용됩니다.
세션과 쿠키는 다른 개념이지만 두개 모두 사용자의 정보를 유지하기 위한 기능입니다. 두 가지 방법중 하나만 사용해도 되지만, 세션은 서버에 저장공간을 사용하므로 자원의 낭비를 줄이기 위해 쿠기와 같이 사용하는 식으로 사용자의 정보를 유지합니다
JWT
JWT는 Json Web Token의 약자로 인증을 위해 사용됩니다.
Token의 인증 과정은 사용자가 로그인 요청을 하면 서버에서 Token을 응답과 함께 사용자에게 전달하고,
사용자는 요청 과정마다 Token을 함께 보내 인증을합니다. Token을 전달할 때 Cookie안에 담아서 전달하기 때문에
Cookie와 같은 Process를 가집니다.
JWT는 Json형식으로 Token을 만든 것입니다.
header & payload & signature 3부분으로 구성되어 있습니다.
JWT의 인증 방식에는 Access Token과 Refresh Token 2개의 Token이 사용됩니다.
우선 사용자의 로그인 요청을 받으면 Token 2개를 생성하고 사용자는 요청을 할 때마다 header부분에 Access Token을
넣어서 전송합니다. Access Token이 만료되었다면 사용자가 Refresh Token을 보내고 서버는 일치여부를 확인한 뒤
일치하면 새로운 Access Token을 생성해 전달하는 방식으로 인증을 합니다.
Session VS JWT
Session과 JWT 모두 인증 기능을 하기 때문에 2가지 중 선택을 하거나 2개 다 사용해서 인증 방식을 결정해야 합니다.
무조건 JWT가 좋다는 것이 아닌 각 방식의 장단점을 알아야 합니다.
Session은 서버에 사용자의 정보를 모두 저장하고, JWT는 서버에 저장하는 크기가 작지만 누구나 볼 수 있기 때문에
payload부분에 중요한 정보는 담지 못하고 Token을 탈취하면 대처하기 어렵습니다.
이런 부분을 알고 사용하신다면 더 좋은 성능을 낼 수 있을 것입니다.
'Spring Security' 카테고리의 다른 글
OAuth2란 (1) | 2024.02.05 |
---|---|
JWT 로그인 구현 (0) | 2024.02.04 |
JWT (0) | 2024.01.29 |
로그인 인증 과정 (0) | 2024.01.16 |
Spring Security (Before Learning) (0) | 2023.08.06 |