토큰 기반 인증 시스템이란
서버 측에서 유저의 정보를 유지하지 않고, 유저가 회원인증을 할 때 식별할 수 있는 토큰(Token)을 발급해주고 유저 자기 자신임을 인증할 수 있도록 해주는 것을 말한다. 이 토큰은 유효기간과 정보를 담고 있고, 해싱 알고리즘을 통해 암호화 되어 있어 처음 서버로 부터 발급해준 토큰 정보가 변조되지 않음을 보장 해 줄 수 있다.
토큰 기반 인증 시스템을 도입하게 되었을 때의 장점
- 서버 확장 시 용이함
분산 서버로 확장하게 되어도 유저는 동일한 토큰으로
서버에 요청하면 되고 서버는 데이터베이스 조회로 필요없고
토큰이 위조되지 않았는지만 검증한 후 유저의 신뢰를 처리하면 되기 때문
- 플랫폼간 권한 공유
페이스북, 구글계정, 카카오로그인 등을 통한 소셜 로그인 구현 시에도
해당 API를 제공하는 회사에서도 토큰 기반 인증 시스템을 사용하기 때문
해당 플랫폼이 발급해준 토큰을 이용해 우리 백엔드 서버에 이를 통하여
회원정보를 가져오고 서비스 할 수 있도록 도와 줌
- 모바일 어플리케이션
세션기반을 사용한다면 쿠키를 사용하기 때문에 쿠키를 따로 관리해줘야 함
하지만 토큰을 사용한다면 웹 API 에 헤더에 토큰을 던져서 사용하면 되기 때문
JWT ( JSON WEB TOKEN )
전자 서명 된 URL-safe의 JSON이며 전자 서명은 JSON의 변조를 체크할 수 있다. JWT는 속성정보를 JSON 데이터 구조로 표현한 토큰이며, 서버와 클라이언트 간 정보를 주고 받을 때 HTTP Request Header에 JSON 토큰을 넣고 서버에 요청하는 형식으로 사용하여 인증을 진행한다. JWT는 HMAC 알고리즘을 사용하여 비밀 키 또는 RSA를 이용한 공개키/비밀키 쌍으로 서명할 수 있다.
JWT 장점
- URL 파라미터와 Header 사용
- 디버깅 및 관리 용이
- 트래픽에 대한 부담이 낮음
- REST 서비스 제공 가능
- 토큰 안에 내장된 만료
JWT 사용하기 좋은 서비스
- 마이크로서비스의 인증/인가
- 회원인증
- 데이터 교류
레퍼런스
www.opennaru.com/opennaru-blog/jwt-json-web-token/
'General' 카테고리의 다른 글
브라우저 렌더링 성능 최적화 방법 (0) | 2021.10.14 |
---|---|
[CS] 프로세스와 스레드의 차이 (0) | 2021.10.05 |
[Nginx] React 프로젝트 배포하는 방법 (0) | 2021.04.15 |
브라우저 렌더링 과정에 대한 이해 (0) | 2020.10.02 |
[CSS] Pre-Processor (Sass) 에 대한 이해 (0) | 2020.08.04 |
댓글