[NodeJS] DAY4

ITselfhiam
|2023. 11. 3. 23:50

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 생성 및 검증 사이트

 https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

'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