1 분 소요

이번 주 배운 것

인가, 인증의 차이

인증   인가
유저가 누구인지 확인하는 절차 유저에 대한 권한을 확인하고 서비스를 사용할 수 있는지 체크하는 것, 접근 권한 체크  
로그인, 토큰 확인 (로그인을 한 상태에서 권한을 부여받음, 로그인을 해도 일정 수준 이상의 권한이 있어야 무언가를 할 수 있음 등)  

현재 작업하고 있는 프로젝트에선 JWT를 이용해 토큰을 발급하는 것을 사용하고 있다.

JWT(JSONWEBTOKEN)

로그인 등에 사용될 때 사용되는 토큰 중 하나.
웹표준을 따르고 있으며 JSON 객체를 사용하여 정보를 전달함.
REST API를 만들 때 주로 사용하는 토큰.

구조

header.payload.signature

header : 토큰의 타입(typ), 해싱 알고리즘(alg) 같은 토큰 자체의 정보를 전달한다.

payload : 토큰에 담을 수 있는 정보들이 이 안에 담겨 있다.

signature : 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드.

JWT의 장단점

장점 단점
필요한 모든 정보는 토큰 자체에 포함되어 있어 별도의 인증 저장소가 필요 없음. 토큰 자체에 정보가 있어 디코딩될 경우 위험함
쿠키를 전달하지 않아도 되므로 쿠키를 사용함으로써 취약점이 조금 낫다. 토큰 기이가 좀 길어서 네트워크에 부하를 줄 수 있다.
트래픽에 대한 부담을 덜 수 있다. payload만 따로 때서 디코딩 할 위험이 있다.
내장된 만료 토큰의 소유권은 발급한 사람에게 있다.

쿠키와 세션 방식의 장단점

이번 프로젝트에선 쿠키를 통해 정보를 전달했던 것 같은데 다음에는 세션을 통해서 전달해 보려고 한다. 쿠키와 세션의 차이에 대해서 잠깐 정리하고 가려고 한다.

쿠키 세션
클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어 있는 작은 데이터 파일 세버 측에서 관리하는 작은 데이터 파일
클라이언트에 300개까지 저장 가능 서버에서는 클라이언트를 구분하기 위해 세션 id를 부여하여 웹 브라우저가 서버에 접속하여 브라우저가 종료할 때까지 인증 상태를 유지함.
사용자가 따로 요청하지 않아도 브라우저가 request시 request header를 넣어서 자동으로 서버에 전송함 사용자가 많을 수록 서버 메모리를 많이 차지함
아이디, 비밀번호 저장 보안 면에서 쿠키보다 우수함

태그:

카테고리:

업데이트: