Cookie/Session , Token , OAuth2.0

유희준·2023년 5월 4일
0


클라이언트 : 서버로 로그인 요청을 보내기
a. 아이디, 비밀번호를 입력해서 로그인 버튼을 클릭한다.

서버 : 로그인 요청을 처리하기
a. 요청으로 전달받은 아이디와 비밀번호가 회원가입이 되어있는 정보인지 확인한다.
b. 회원이라면, 응답에 쿠키와 회원 정보를 담아 전달한다.

클라이언트 : 응답을 받아 React 상태를 업데이트

클라이언트 : 화면 리렌더링 → 조건부 렌더링으로 마이페이지 표시
만약 로그인할 때 ‘로그인 유지’ 옵션을 선택했다면, 해당 페이지에 재접속할 때 다시 로그인할 필요 없이 서버에서 받아온 쿠키를 사용해서 회원 정보를 받아오게 됩니다.
로그아웃을 일부러 하지 않는 이상, 쿠키 유지 시간만큼 자동 로그인이 유지됩니다.

클라이언트 : 로그아웃 버튼을 눌러 서버에 로그아웃 요청 보내기

서버 : 로그아웃 요청 처리
a. 쿠키를 삭제하고 클라이언트로 응답을 보낸다.

클라이언트 : 응답이 잘 돌아오면 React 상태 초기화

클라이언트 : 화면 리렌더링 → 조건부 렌더링으로 로그인 페이지 표시

Session

Token


1. 사용자가 인증 정보를 담아 서버에 로그인 요청을 보냅니다.

  1. 서버는 데이터베이스에 저장된 사용자의 인증 정보를 확인합니다.

  2. 인증에 성공했다면 해당 사용자의 인증 및 권한 정보를 서버의 비밀 키와 함께 토큰으로 암호화합니다.

  3. 생성된 토큰을 클라이언트로 전달합니다.

HTTP 상에서 인증 토큰을 보내기 위해 사용하는 헤더인 Authorization 헤더를 사용하거나, 쿠키로 전달하는 등의 방법을 사용합니다.
5. 클라이언트는 전달받은 토큰을 저장합니다.

저장하는 위치는 Local Storage, Session Storage, Cookie 등 다양합니다.
6. 클라이언트가 서버로 리소스를 요청할 때 토큰을 함께 전달합니다.

토큰을 보낼 때에도 Authorization 헤더를 사용하거나 쿠키로 전달할 수 있습니다.
7. 서버는 전달받은 토큰을 서버의 비밀 키를 통해 검증합니다. 이를 통해 토큰이 위조되었는지 혹은 토큰의 유효 기간이 지나지 않았는지 등을 확인할 수 있습니다.

  1. 토큰이 유효하다면 클라이언트의 요청에 대한 응답 데이터를 전송합니다.

OAuth


1. 사용자가 Application에 접속합니다.
2. Application에서 Authorization Server로 인증 요청을 보냅니다.
3. Authorizaiton Server는 유효한 인증 요청인지 확인한 후 액세스 토큰을 발급합니다.
4. Authorization Server에서 Application으로 액세스 토큰을 전달합니다.
5. Application은 발급받은 액세스 토큰을 담아 Resource Server로 사용자의 정보를 요청합니다.
6. Resource Server는 Application에게서 전달받은 액세스 토큰이 유효한 토큰인지 확인합니다.
7. 유효한 토큰이라면, Application이 요청한 사용자의 정보를 전달합니다.

profile
매일 뭐든하기

0개의 댓글