클라이언트는 해당 토큰을 웹 브라우저에 저장한다.
그 후 다음에 다시 요청할 때 발급 받은 토큰을 보내준다.
토큰이 목록에 존재하면, 이전에 접속을 한 적이 있는 유저이므로 로그인을 한다.
세션 id를 삭제하는 방법은 2가지가 있다.
서버에서 삭제
사용자가 브라우저를 종료
특정 시간이 지나면 서버에서 세션 id를 정리(삭제)함
세션은 로그인(인증)에 많이 사용된다.
CIA(Confidentiality Integrity Availability)
출처: https://iseunghan.tistory.com/357 [iseunghan:티스토리]

A에서 B로 보내는 데이터를 C가 중간에 가로챌 수 있다.
이는 기밀성이 깨진 것이다.

만약 C가 중간에 가로챈 데이터를 삭제하고 다른 데이터를 B에게 보낸다면
무결성이 깨진 것이다.

이렇게 되면 결국 B는 원래 A가 보내려던 데이터를 받을 수 없었기 때문에
가용성이 깨졌다.

가용성을 지키려면 데이터 양옆에 최고의 전사(가드)들을 세운다.
근데 이는 가드가 뚫리면 다시 탈취 당할 수 있다.

그렇기때문에 평문의 데이터를 암호화한다. 그렇게 되면 탈취(가용성 깨짐)가 되더라도 암호화가 되어있기 때문에 데이터의 내용은 보여지지 않아 기밀성은 깨지지 않는다.

만약 a라는 열쇠로 이 데이터를 잠궜다면, B에게 열쇠를 전달해야한다.
이때 열쇠를 어떻게 전달할지 문제가 생기게 된다. 만약 열쇠를 탈취당하면 c도 암호화된 데이터를 볼 수 있기 때문이다.

또한 만약에 탈취한 데이터가 암호화되어서 보지 못하면, 새로운 데이터를 만들어 B에게 보낼 수 있기 때문에 데이터가 누구로부터 왔는지도 알아야한다.
이 두 가지 문제가 여전히 남아있다.
RSA(암호화)
Public Key(공개 키)
자신의 블로그나 오픈된 공간에 공개해도 문제되지 않음
Private Key(개인 키)
오직 자신만 알고 있어야 함
키 하나로 열고 닫기가 가능하면 대칭키
앞서 말한 두 가지 문제는 RSA로 해결이 가능하다.

a가 데이터를 보낼 때 b의 공개키로 암호화해서 보낸다. 이는 b의 개인 키로만 복호화가 가능하기 때문에 만약 탈취 당하더라도 c는 읽을 수 없다.
공개 키 -> 개인 키 = 암호화

a의 개인키로 암호화한 데이터를 보내주고 a의 공개키로 해당 데이터가 암호화가 풀리면 a가 보낸 것을 확인할 수 있으므로 누가 보냈는지 확인할 수 있다.
개인 키 -> 공개 키 = 전자서명
B는 이제 문서를 받았을 때, 아래와 같이 처리한다.
인증
A의 공개키로 문서를 열어본다.
열린다? A가 보낸 것이 확실하다. (인증 완료)
안열린다? A가 보낸 것이 아니므로 열지 않는다.
암호화
B의 개인키로 열어본다.
열린다? 암호화가 잘 되었다. (암호화 완료)
안열린다? 암호화가 되지 않았다.