반응형
로그인 방식을 사용하는 이유?
서버와 클라이언트는 비 연결적인 특성으로 인해 연결이 해제되면 서버는 클라이언트가 이전에 요청한 결과에 대해 잊어버리게 된다.
따라서 요청을 할 때마다 서버에 연결을 시켜주는 작업이 필요한데, 이러한 불편함을 해결하기 위해 session방식이나 token 방식으로 연결을 유지시키는 방법이 도입되었다.
session 방식 로그인이란?
사용자가 로그인을 하면 사용자 고유의 session id를 만들어서 로그인 인증을 하는 방식이다. session id의 저장공간은 서버의 세션 저장소에 저장이 되며 브라우저에는 쿠키 형식으로 저장되어 있다.
인증 방식
최초에 브라우저 인증 절차를 마친 이후의 요청마다 HTTP 쿠키 헤더에 session id를 함께 서버로 전송한다.
서버는 요청을 전달 받고 session id에 해당하는 세션 정보가 서버의 세션저장소에 존재한다면 사용자를 인증된 사용자로 판단한다.
*쿠키 헤더란?
HTTP요청 시 클라이언트에서 서버로 전달하는 것
서버의 세션 상태를 담은 session id 혹은 각종 클라이언트 정보를 담고있다.
JWT 방식 로그인이란?
jwt(json web token)을 이용한 로그인 방식은 인증정보를 클라이언트가 직접 들고있는 방식이다.
인증 정보를 토큰의 형태로 브라우저의 로컬스토리지나 쿠키에 저장하고 사용한다.
인증 방식
토큰 기반 인증에서는 토큰을 HTTP authorization 헤더에 실어 보낸다. 서버는 토큰의 위변조 여부나 만료 시간을 확인 후 토큰에 담겨있는 사용자 인증 정보를 확인해 사용자를 인가한다.
session과 token의 차이?
세션기반 로그인
- 쿠키 헤더에 session id만 실어 보내면 되므로 트래픽을 적게 사용한다.
- 모든 인증정보를 서버에서 관리하기 때문에 보안 측면에서 조금 더 유리하다. 만약 해커에게 session id가 탈취당한다고 해도 서버측에서 해당 세션을 무효처리가 가능하다.
- 하나의 도메인에 여러개의 서버를 연결 할 경우 별도의 작업처리를 해줘야만 세션 불일치 오류가 발생하지 않는다. 일반적인 웹 어플리케이션의 경우 다양한 이유로 여러개의 서버를 두고 로드 밸런싱을 사용하는데, 이때 세션기반은 사용하기 불편하다는 단점이 있다.
- 트래픽은 적게 사용하지만 서버 저장소에 가해지는 부담도가 더 높다.
JWT 기반 로그인
- 사용자의 인증 정보, 토큰의 발급시각, 만료시각, 토큰의 id 등 많은 정보를 보내야 하므로 더 많은 네트워크 트래픽을 사용한다.
- 클라이언트가 모든 인증 정보를 가지고 있으므로 보안적으로 취약할 수 있다.
- payload에는 민감한 데이터를 실을 수 없다.
- 클라이언트가 token을 저장하고 있으므로 서버가 확장되어도 문제없이 사용이 가능하다.
- 트래픽은 많이 사용하지만 서버저장소에 가해지는 부담이 적다.
반응형
'웹개발' 카테고리의 다른 글
Access token & Refresh token 파헤치기 (0) | 2023.12.26 |
---|---|
동기식 프로그램 비동기식 프로그램 ,블럭 논블럭 비교 (4) | 2023.12.03 |