목록Programming/Web (3)
몰입공간

#1. JWT JWT(Json Web Token)는 토큰 인증 방식 중 아마 가장 널리 쓰이는 라이브러리입니다. 관련 커뮤니티도 활발하고, 자체적으로 사용법에 대한 E-BOOK도 제공하는 것으로 알고 있습니다. JWT가 인기있는 인증 모듈로 각광을 받게된건 다음과 같은 이유라고 생각합니다. 확장이 용이하다. (Scalability) 사용하기 편하다. (Simplicity) 서버에 저장하지 않는다. (Stateless) 어쩌다보니 3S를 맞추려고 어거지로 작성한 느낌이 있는데 결국 다 연관있는 이야기입니다. 이런 인기와 맞물려 무분별하게 JWT를 쓰는 경향과 이에 따른 보안이슈에 대해 목소리를 내는 개발자들이 많은 걸 보았습니다. 실제로 "한물간" 세션 인증방식으로 회귀해야한다고 주장하는 경우가 대부분인데..

#1. 개요 거의 모든 웹어플리케이션이 필수적으로 적용하는 기능이 회원과 로그인 입니다. 많은 프로젝트에서 User 관련 기능을 구현해보고, 세션 및 토큰 기반의 인증 방식을 모두 구현하거나 리팩토링한 적이 있음에도 불구하고, 방식에 대한 깊은 이해가 수반되지 않음을 반성하며 학습 내용을 포스팅합니다. 또한 염두해두지 않았던 토큰 방식(JWT)의 보안적인 문제와 HTTP header에 관해 별도의 포스팅으로 다룰 예정입니다. #2. HTTP는 stateless 하다. 인증 방식에 대해 논하기 전에 stateless(무상태) 한 HTTP 특성에 대해 먼저 알아야합니다. HTTP는 stateless한 프로토콜 입니다. stateless 하다는 것은 서버가 클라이언트의 상태를 기억하지 않는다는 것입니다. 이러..

#1 클라이언트 - 서버 모델 1-1. 클라이언트 엄밀히 말해 서버에 접근해 상호작용이 가능한 브라우저(혹은 소프트웨어)를 의미하지만 보통 '사용자(user)'를 지칭한다. 유저의 입력을 처리하고 이를 받아서 서버에 데이터를 요청한다. 1-2. 서버 클라이언트 및 DB와 통신하여 클라이언트의 요청을 처리하고 이를 다시 보내준다. 통상적으로 웹/앱을 의미한다. 1-3. 데이터베이스(DB) 서버로 부터 분리된 외부의 데이터 저장 공간을 의미한다. 서버 자체에 두어도 교류가 가능하지만, 비즈니스 형태로 발전하여 방대한 데이터를 다룬다면 보안과 편리성 등 여러가지 이유로 따로 설정한다. 1-4. 작동방식 데이터 교류를 위한 서버와 클라이언트의 상호작용은 '네트워크'를 통해 이루어진다. 데이터 교류 상호작용은 특..