인증

인증

    쿠키(Cookie), 그리고 세션(Sessions)에 대해 알아보자

    인증과 관련된 포스트 중 마지막으로 알아볼 것은 쿠키(Cookie)와 세션(Sesisons)이다. 어플리케이션 레벨에서 인증하는 JWT(JSON Web Token), OAuth, Session 을 끝으로 인증 쪽은 마무리 지을 예정이며 프로토콜 레벨의 인증인 HTTP Basic, HTTP Digest 인증은 생략하기로 하자. 언젠간 이야기할 지도 모르겠지만, 지금 이 시점은 아니다. 세션(Sessions) 세션(Sessions)은 웹 어플리케이션을 개발할 때 기본적으로 배우는 쿠키(Cookie)*와 함께 배우는 개념이다. 둘 다 데이터라는 점에서는 동일하지만 쿠키는 클라이언트(웹 브라우저)에, 세션은 서버(파일, RDBMS, Redis)에 저장된다는 것이 가장 큰 차이점이다. 쿠키*는 비로그인 상태에서 ..

    OAuth 2.0 클라이언트 만들기(feat. 깃허브)

    OAuth 2.0 OAuth 는 기본적으로 서비스 제공자(깃허브, 트위터, 페이스북)가 신뢰할 수 없는 타 어플리케이션에게 사용자의 아이디와 패스워드를 제공하지 않더라도 사용자의 특정 정보에 접근하거나 작업을 처리할 수 있도록 하는 방법이자 표준이다. 최근 일반적으로 웹사이트에 흔히 볼 수 있는 SNS 계정으로 로그인하는 것이 가장 대표적인 사용처라고 볼 수 있다. 내가 만든 서비스에 수동으로 회원가입 기능을 넣지 않더라도 서비스 제공자가 가지고 있는 개인정보를 기반으로 로그인할 수 있도록 하는 것이며 이를 사용하면 작은 서비스에서 직접 비밀번호를 관리해야 하거나 하는 번거로운 부분을 떠안고 가지 않고 부담을 대기업에게 떠넘기게 된다. JWT(Json Web Token)와는 다르게 토큰 자체는 큰 의미를..

    JWT(JSON Web Token)의 개념부터 구현까지 알아보기

    JWT(JSON Web Token) JWT 는 유저를 인증하고 식별하기 위한 토큰(Token)기반 인증이다. RFC 7519 에 자세한 명세가 나와있다. 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에 메모리나 스토리지 등을 통해 세션을 관리했던 서버의 부담을 덜 수 있다. JWT 가 가지는 핵심적인 특징이 있다면, 토큰 자체에 사용자의 권한 정보나 서비스를 사용하기 위한 정보가 포함(Self-contained)된다는 것이다. 데이터가 많아지면 토큰이 커질 수 있으며 토큰이 한 번 발급된 이후 사용자의 정보를 바꾸더라도 토큰을 재발급하지 않는 이상 반영되지 않는다. JWT 를 사용하면 RESTful 과 같은 무상태(Stateless)인 환경에서 사용자 데이터를 주고 받을 수 있게된다. 세션..