AUTH란?
Authentication(인증) 이라는 뜻을 담고 있다.
Session & Cookie의 정의
Session (세션)
1. 웹서버(Web Server) 측에서 유지되는 상태 정보
2. 사용자에 대한 고유한 세션ID를 통해 식별
3. 서버메모리(ServerMemory) 또는 데이터베이스(DataBase)에 저장할 수 있음.
Cookie(쿠키)
1. 클라이언트(Client) 컴퓨터에 저장되는 작은 데이터 조각
2. 서버(Server)로 부터 전송되어 웹브라우저에 저장
3. 텍스트 형식으로 주소 사용자 인증, 설정, 장바구니 등에 사용
JWT란?
JSON Web Token의 약자입니다.
특징
1. 웹 애플리케이션과 서비스 간에 정보를 안전하게 전달하기 위한 인증 및 권한 부여 매커니즘을
구현하는데 사용되는 표준화된 방법 중 하나
2. JSON 포맷을 사용하여 정보를 표현하며, 서명 및 암호화를 통해 정보의 무결성을 보장
형식
{ Header | Payload | Signature }
Header : 토큰 유형 및 서명 알고리즘과 같은 메타데이터가 포함
Payload : 토큰에 포함될 데이터가 들어있는 부분
Signature : 헤더, 페이로드 및 비밀 키를 사용하여 생성된 서명으로 토큰의 무결성을 검증
Header
Header(해더)의 구성
1. alg: 서명(signature) 생성 시 사용한 해시 알고리즘
HS256 지원(HMAC SHA256)
2. typ: 토큰 타입
JWT 형식만 지원
ex) 예시
{
"alg": "HS256",
"typ": "JWT"
}
Payload
Payload(내용)의 구성
1. path: 토큰의 적용 대상 URL 경로(필수로 값이 들어가야함, * 사용가능)
2. exp: 토큰 만료 시간(expiraton)
3. nbf: 토큰 활성 시간(Not Before)
4. cip: 클라이언트 IP 대상
ex) 예시
{
"path": "/foo/bar/example.mp4",
"exp": 1672455600,
"nbf": 1669258800,
"cip": "192.168.200.0/24"
}
Signature
Signature(서명) 생성방법
1. Header와 Payload를 각각 Base64 URL로 인코딩을 진행한다.
ex) 예시
# as-is
{
"alg": "HS256",
"typ": "JWT"
}
# to-be
{"alg":"HS256","typ":"JWT"}
# Base64 URL 인코딩
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
2. 마침표(.)를 구분자로 사용하여 인코딩된 Header와 Payload를 연결한다.
3. 연결된 문자열을 Secure key와 함께 알고리즘(HMAC SHA256)으로 해시값을 추출한다.
Signature 생성 및 검증 사이트
'Study > NodeJs' 카테고리의 다른 글
[NodeJS] package.json 설치 및 다른 PC에서 복구방법 (0) | 2023.11.02 |
---|---|
[NodeJS] DAY3 (0) | 2023.10.31 |
[NodeJs]Day2 (0) | 2023.10.30 |
[NodeJs] Day1 (0) | 2023.10.26 |