인증서 종류(세션, 토큰)

모찌모찌·2024년 4월 8일
0

유저 기능 원리

목록 보기
3/10
post-custom-banner

인증서 종류는 크게 두가지로 나뉜다.
작동하는 원리에 따라 각각 세션,토큰이라 부른다.
1. 세션 사용 - 세션 기반 인증
2. 토큰 사용 - 토큰 기반 인증

1. 세션 기반 인증

세션 : 서버가 저장하는 사이트 방문자들에 대한 기록

  1. 누군가 서번에 첫 리퀘스트를 보내면 서버는 이방문에 대한 데이터를 세션에 저장
    => 방문을 특정 지을수있는 값(아이디), ip주소, 마지막 방문, 브라우저정보 등을 저장.

  2. 리스폰스 set-Cookie 헤더에 새롭게 만든 세션의 아이디 추가 후 클라이언트에게 전달.

  3. 다음에 같은 클라이언트가 리퀘스트를 보내면 쿠키로 세션아이디가 같이 보내지는데 이것만 확인하면 방문자가 누군지 파악할수있다.

*이메일과 비밀번호가 확인되면 세션에 한명의 유저를 특정지을수있는 user_id 저장. 로그인이 안된 유저는 NULL 저장

즉, 클라이언트가 쿠키로 세션 아이디를 보내주기 때문에 서버는 매칭되는 정보를 찾아서 리퀘스트를 보낸 유저를 찾을수있다.

❗ 특정시간이 지나거나, 유저가 로그아웃리퀘스트를 보내면 서버는 해당 세션이나 로그인 유저를 만료 처리한다.


2. 토큰 기반 인증

인증 토큰을 이용해 리퀘스트를 보낸 유저 파악.

✅ 인증토큰(Access 접근토큰)

: 유저에 대한 정보를 암호화한 문자열

토큰 자체를 해석해서 사용한다.

✅ 흐름

  1. 로그인 리퀘스트를 통해 이메일과 비밀번호를 보냈고 서버가 이 정보가 유효하다는걸 확인했다고 치고.

  2. 서버는 토큰을 만든다.
    => 일반적으로 서버만 알수있는 비밀키를 사용하여 암호화한다.


    (암호화 방식)

  1. 리스폰스 바디에 토큰을 저장해서 클라이언트에게 전달

토큰을 돌려받을 때도 쿠키보다는 Authorization헤더로 돌려받는 것이 일반적이다.

  1. 클라이언트가 리퀘스트로 다시 보내면 서버는 돌려받은 토큰을 비밀키를 사용하여 다시 해석하고 안에 저장된 만료일을 확인하는 등 간단한 테스트를 거친 후 유저를 특정 짓는다.

인증 토큰을 사용하면 문자열 토큰을 갖고 있기만 하고 만료시간이 지나지않았으면 항상 로그인 상태를 유지할수있다.
=> 유저가 로그아웃 하고 싶으면 직접 토큰을 삭제 하면 된다.


토큰 종류

  1. JWT(JSON Web Token)
profile
꼬꼬마 개발자 지망생
post-custom-banner

0개의 댓글