Authentication

mint.forever·2020년 9월 11일
0
  • 서버가 사용자의 위치에 정보를 저장하고 불러올 수 있는 수단(클라이언트에서 관리)

    1. 특정 호스트에서 생성된 쿠키는 이후 모든 요청마다 서버로 다시 전송
    2. 이름, 값, 만료 날짜, 경로 정보로 구성
  • 클라이언트가 서버에 request를 보내면, 서버가 setCookie를 통해 생성하거나 원하는 값을 key = value

    로 담아서 response 보낼 수 있음

    • 그 이후엔, 쿠키를 지우기 전까지는 자동적으로 그 쿠키가 유지되면서 client와 server사이를 왔다갔다 할 수 있음
  • 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있다.

  • response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있다.

  • 보안에 취약 ⇒ 이를 보완하기 위해 session이 생김

  • 쿠키는 서버가 삭제할수 없음. expire를 해줘야함

Session

  • 서버와 클라이언트의 연결이 활성화 된 상태 자체를 의미

    1. 서버가 Client에 대해 유일한 ID를 부여하여 서버 측에서 관리
    2. 일반적으로 이 유일한 Client ID가 서버에서 존재하는 상황을 Session이라고 칭함
    3. 각 Client ID의 Session 객체 마다 Data를 관리 할 수 있음
    4. 사용자의 정보 중 보안상 중요한 데이터는 Session에서 관리함
    5. 클라이언트에 개별적으로 발급되는 세션의 id는 set-cookie 에 담겨있음
  • 세션의 만료시간

    • 서버에 계속 세션객체가 남아있으면 보안도 취약하고, 서버에 부담이 됨
    • 따라서 세션의 수명을 지정해줘야함!

Token

  • 인증을 위해 사용되는 암호화 된 문자열
    1. Http 통신의 Stateless 특징과 알맞다
    2. 유저의 인증 정보를 서버나 세션에 담아두지 않음
    3. 유저의 활성화 여부를 신경쓰지 않고 넘겨진 요청에 담겨진 Token의 정합성만을 확인
    4. 서버에서 클라이언트의 상태 정보를 저장하지 않고 클라이언트에서 넘겨지는 요청만으로 작업을 처리하게 되는데 이런 경우 클라이언트 상태관리에 관한 비용이 없기 때문에 서버의 확장성이 높음
  • 클라이언트에서 토큰을 저장하고 관리하면서, 서버의 세션 객체에 접근할 때 인증하기 위해 사용됨

🍪️ 블로그 참고 | 쿠키와 세션 개념

0개의 댓글