무지를 아는 것이 곧 앎의 시작

Web 4

캐시와 관련된 HTTP 헤더들

HTTP 요청을 통해 데이터를 주고 받을 때 네트워크 통신 비용이 발생한다. 만약 데이터가 변경되지 않은 상태라면, 이전에 요청을 통해 받은 데이터를 클라이언트나 캐시 서버에 캐시해둬서 오리진 서버측에 직접 요청하지 않고 통신 비용을 아낄 수 있지 않을까? HTTP에선 응답 데이터에 대해서 캐시를 어떻게 다룰 지에 대한 명세를 나타내는 헤더들이 존재한다. 이번 포스팅에선 이 헤더들에 대해 알아보겠다. Cache-Control Cache-Control 헤더는 캐시에 관련된 HTTP/1.1 부터 도입된 표준 헤더이다. 브라우저의 캐시 뿐만 아니라 프록시나 CDN에 대해서도 다룬다. 디렉티브라고 부르는 옵션들이 있고 콤마로 구분한다. 일반적으로 다음과 같은 옵션을 다룬다. no-cache Cache-Contr..

Web 2022.12.10

리프레시 토큰 탈취 대응 전략을 고민하다 도달한 세션쿠키 vs 토큰에 대한 고민

세션 쿠키 방식과 토큰 방식 간단정리 웹 어플리케이션을 구현하는 데에 대표적인 인증방식 중에 세션과 쿠키를 이용한 인증방식과 토큰 기반의 인증 방식이 있다. 각 방식마다 특징이 다르다. 세션 쿠키 방식 세션과 쿠키를 이용한 로그인 방식의 경우 서버에서 사용자의 로그인 정보를 세션으로 저장하고 있게 된다. 그리고 짧은 유효기간을 둔 세션ID를 클라이언트의 쿠키에 저장하여 해당 쿠키를 서버에서 까보고 세션 유효기간을 늘려주는 방식으로 동작한다. 토큰 방식 토큰방식의 경우 토큰 자체에 정보를 저장하기 때문에 서버에 따로 자원을 저장하지 않고 로그인을 구현할 수 있다. 서버는 토큰의 유효성을 검증하는 수단만 가지고 따로 토큰을 추적하지 않기 때문에 서버의 부담을 줄일 수 있다. 장단점 정리 세션 쿠키를 이용한 ..

Web 2022.11.09

OAuth, OpenID

인증과 인가 인증: 사용자의 신원을 확인 인가: 사용자가 자원에 접근할 수 있는지 권한을 확인 OAuth는 인가를 위한 프로토콜이다. 자원의 소유자가 클라이언트에게 자원에 접근할 수 있는 엑세스 토큰을 발급 해당 엑세스 토큰을 통해 자원에 접근이 가능 OAuth 1.0과 vs OAuth 2.0 차이 OAuth 2.0은 기존의 OAuth 1.0과 호환되지 않는 새로운 프로토콜. 기존의 OAuth 1.0은 데스크톱이나 휴대폰 애플리케이션에서 사용자가 원하는 서비스로 브라우저를 연 뒤 서비스를 인증하고, 서비스에서 애플리케이션으로 토큰을 복사하여 사용하는 방식. 브라우저를 왔다갔다하는 과정때문에 사용자 경험 측면에서 좋지 않음. OAuth 2.0이 나타나며 이러한 인증 절차가 간소화 되었으며 몇가지 용어가 변..

Web 2022.11.08

내편 리프레시 토큰 도입기

우아한테크코스 4기 과정에서 팀 프로젝트로 내편이라는 서비스를 개발하고 있다. 모임을 만들고 그 모임의 구성원들끼리 롤링페이퍼를 작성할 수 있는 서비스다. 해당 서비스에선 로그인 구현을 1시간 유효기간의 Access Token을 클라이언트에 발급해서 구현했는데, 직접 사용해보고 우테코 내의 다른 크루들의 피드백을 받았을 때 로그인이 너무 자주 풀려서 불편하다는 피드백을 받았다. 그래서 리프레시 토큰 도입을 고민했고 이를 적용한 내용을 기록해볼까 한다. 리프레시 토큰 도입을 고민하게 된 이유 현재 accessToken 유효시간은 1시간인데, 이 시간이 지나면 사용자는 로그인이 풀리게 된다. 너무 자주 로그인이 풀리고, 매번 로그인을 다시 하기 번거롭기 때문에 개선해야 한다. 그럼 accessToken 유효..

Web 2022.10.13