Session vs JWT

Flutter 앱/Network 2022. 7. 22. 20:49
728x90

Session_Based Authentication

- 세션을 이용하면 서버 Side 에 로그인된 사용자의 모든 정보를 저장한다.

- 동일 아이디 다중 접속시 기존 접속 강제 로그아웃 기능을 직접 구현해야 한다.

 

Token-Based Authentication

- 토큰 기반 인증은 클라이언트 Side에 저장되기 때문에 별도의 DB없이 로그인 구현이 가능하다.

- 서버는 토큰의 유효성 여부만 체크하므로 서버의 부담이 적다.

- 로그인된 사용자 통제가 어렵고, 강제 로그아웃 기능은 사용할 수 없다.

- 해커에게 토큰을 탈취당하면, 해당 토큰을 무효화시킬 대응이 쉽지 않다.

- JWT(JSON Web Token)는 속성 정보 (Claim)를 JSON 데이터 구조로 표현한 토큰으로 RFC 7519 표준이다.

- JWT는 서버와 클라이언트 간 정보를 주고 받을 때 Http 리퀘스트 헤더에 JSON 토큰을 넣은 후 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT 정보를 통해 인증한다.

- JWT는 세 파트로 나누어지며, 각 파트는 점로 구분하여 xxxxx.yyyyy.zzzzz 이런식으로 표현된다. 순서대로 헤더 (Header), 페이로드 (Payload), 서명 (Sinature)로 구성한다.

 

일반적으로 JWT 를 사용하면 아래와 같은 순서로 진행된다.

1. 클라이언트 사용자가 아이디, 패스워드를 통해 웹 서비스 인증

2. 서버에서 서명된(signed) JWT 를 생성하여 클라이언트에 응답으로 돌려주기

3. 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header 에 첨부한다.

4. 서버에서 클라이언트로부터 전달받은 JWT를 검증한다.

 

 

 

'Flutter 앱 > Network' 카테고리의 다른 글

ListView.separated 예제  (0) 2023.11.20
Flutter Login Example  (0) 2022.07.25
Flutter Login 로직 구현 예제 (오류 포함)  (0) 2022.07.22
Flutter DIO 라이브러리 예제2  (0) 2022.07.02
Flutter DIO 라이브러리 예제 1  (0) 2022.06.29
블로그 이미지

Link2Me

,