본문 바로가기
Spring boot 프로젝트 기록/기본적인 기초 공부

토큰 기반 인증

by 으노으뇨 2021. 12. 8.
728x90
반응형
SMALL
토큰(Token)은 사용자를 구별할 수 있는 문자열이다.

토큰은 최초 로그인 시 서버가 만들어줍니다.

서버가 자기만의 노하우로 토큰을 만들어 반환하면 클라이언트는 이후 요청에 아이디와 비밀번호 대신

토큰을 계속 넘겨 자신이 인증된 사용자임을 알리는 것입니다.

 

토큰 시퀀스 다이어그램

토큰을 기반으로 하는 요청은 헤더에 Authorization : Bearer<TOKEN> 을 명시합니다.

서버는 이 토큰을 받고 어떤 형태로든 인증을 해야 합니다.

상황을 간단하게 하려고 서버가 랜던함 문자와 숫자를 섞어 UUID 로 토큰을 작성해 넘긴다고 가정해봅시다.

그러면 서버는 토큰을 생성해 인증 서버를 통해 저장해야합니다.

그리고 요청을 받을 때마다 헤더의 토큰을 서버의 토큰과 비교해 클라이언트를 인증할 수 있습니다.


이 솔류션은 Basic Auth를 이용한 로그인과 무엇이 다를까요?

일단 아이디와 비밀번호를 매번 네트워크를 통해 전송해야할 필요가 없으므로 

보안 측면에서 좀더 안전합니다.

또 서버가 토큰을 마음대로 생성할 수 있으므로 사용자의 인가 정보 또는 유효시간을 정해서 

관리할수가 있습니다.

디바이스마다 다른 토큰을 생성해 주고

디바이스마다 유효시간을 다르게 정하거나 임의로 로그아웃을 할 수 도 있습니다.

 


하. 지. 만

이 디자인으 Basic 인증에서 마주한 스케일 문제를 해결 하진 못합니다.

혹시 세선 기반 인증에 대해 알고 있으시다면 토큰은 이름만 바뀐 세션이라고 생각이 드실수도있습니다.

실제로 기능적으로 둘은 거의 같은 기능을 하고 제약도 비슷합니다. 

결국 토큰 이용만으로는 스케일 문제를 해결할 수 없다는 것입니다.

 

728x90
반응형
LIST

'Spring boot 프로젝트 기록 > 기본적인 기초 공부' 카테고리의 다른 글

React-router-dom 라이브러리가 필요한 이유  (0) 2021.12.14
JSON 웹 토큰  (0) 2021.12.11
Basic 인증  (0) 2021.12.08
React 컴포넌트  (0) 2021.12.02
React.js 가 뭐에요?ㅠㅠ  (0) 2021.12.02

댓글