일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 서버 컴포넌트
- 백준
- 동전 0
- JavaScript
- NextJS v13
- 숫자를 별점으로
- 항해99추천
- jQuery
- 날씨 api
- 부트캠프항해
- 항해99솔직후기
- db수정
- server component
- 배열 중복 제거
- 배열 메소드
- greedy
- 그리디
- 중복선택
- 탐욕알고리즘
- 자바스크립트
- 로딩 후 실행
- 클라이언트 컴포넌트
- 항해99후기
- 프로그래머스
- 알고리즘
- react
- 중복카테고리
- 카테고리필터
- 실전프로젝트
- 항해99
- Today
- Total
공부 및 일상기록
[네트워크] 토큰기반 인증방식 본문
토큰 기반 인증 시스템이란?
토큰 기반의 인증 시스템은 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때, 헤더에 토큰을 함께 보내도록 하여 유효성 검사를 한다. 이러한 시스템에서는 사용자의 인증정보를 서버나 세션에 유지하지 않고 클라이언트 측에서 들어오는 요청만으로 작업을 처리한다. 즉, 서버 기반의 인증 시스템과 달리 상태를 유지하지 않으므로 Stateless한 구조를 갖는다. 이러한 토큰 기반의 인증 방식을 통해 수많은 문제점들을 해결할 수 있는데, 대표적으로 사용자가 로그인 되어 있는지 안되어 있는지 신경쓰지않고 손쉽게 시스템을 확장할 수 있다.
동작 방식
1. 사용자가 아이디와 비밀번호로 로그인을 한다.
2. 서버 측에서 해당 정보를 검증한다.
3. 정보가 맞다면 서버측에서 사용자에게 Signed 토큰을 발급한다. (서버가 정상으로 발급한 토큰임을 인증한다는것)
4. 클라이언트 측에서 전달받은 토큰을 저장해두고, 서버에 요청을 보낼 때마다 해당 토큰을 서버에 함께 전달한다. 이때 http 요청 헤더에 토큰을 포함시킨다.
5. 서버는 토큰을 검증하고 요청에 응답한다.
장점
1. 무상태성(stateless) & 확장성(scalability)
토큰은 클라이언트 측에 저장되기 때문에 서버는 완전히 stateless하며 클라이언트와 서버의 연결고리가 없기 때문에 확장하기에 매우 적합하다. 만약 사용자 정보가 서버측 세션에 저장된 경우에 서버를 확장하여 분산처리를 한다면 해당 사용자는 처음 로그인 했었던 서버에만 요청을 받도록 설정을 해주어야 한다. 하지만 토큰을 사용하면 어떠한 서버로 요청을 보내도 상관이 없다.
2. 보안성
클라이언트가 서버로 요청을 보낼 때 더이상 쿠키를 전달하지 않으므로, 쿠키 사용에 의한 취약점이 사라지게 된다. 하지만 토큰 환경의 취약점이 존재할 수 있으므로 이에 대비해야 한다.
3.확장성(Extensibility)
시스템의 확장성을 의미하는 scalability와 달리 로그인 정보가 사용되는 분야의 확정을 의미한다. 토큰 기반의 인증 시스템에서는 토큰에 선택적인 권한만 부여하여 발급할 수 있으며 Oauth의 경우 facebook, google등과 같은 소셜 계정을 이용하여 다른 웹서비스에서도 로그인을 할 수 있다.
4. 여러 플랫폼 및 도메인
서버기반인증 시스템의 문제점 중 하나인 CORS를 해결할 수 있는데, 애플리케이션과 서비스의 규모가 커지면 여러 디바이스를 호환시키고 더 많은 종류의 서비스를 제공하게 된다. 토큰을 사용한다면 어떤 디바이스를, 어떤 도메인에서도 토큰의 유효성 검사를 진행한 후에 요청을 처리할 수 있다. 이런 구조를 통해 assets파일(image, html, css, js등) 은 모두 CDN에서 제공하고, 서버측에서는 API만 다루도록 설계할 수 있다.
https://mangkyu.tistory.com/55
[Server] 토큰 기반 인증 VS 서버(세션) 기반 인증
기존의 시스템에서는 서버 기반의 인증방식을 사용하였다. 하지만 시스템의 규모가 커짐에 따라 서버 기반의 인증 방식은 한계점을 보이기 시작하였고, 토큰 기반의 인증 방식이 등장하게 되었
mangkyu.tistory.com
'개발 > 네트워크' 카테고리의 다른 글
[네트워크] XSS와 CSRF (0) | 2023.01.18 |
---|---|
[네트워크] SEO란 무엇인가? (0) | 2023.01.18 |
[네트워크] JWT토큰을 쿠키에 저장했을 때 취약점 (0) | 2023.01.12 |
[네트워크] 웹 프로토콜 (0) | 2023.01.09 |
[네트워크] TCP 3 Way HandShaking (0) | 2023.01.09 |