2024. 4. 25. 10:17ㆍ공부/면접 준비
JWT 처리 및 토큰 생성:
JWT(JSON Web Token)는 주로 서버 측에서 처리됩니다. 사용자가 자격 증명을 사용하여 로그인하면 인증 서버는 이러한 자격 증명을 확인하고 확인에 성공하면 JWT를 생성합니다. 토큰은 점(.)으로 구분된 세 가지 인코딩된 부분(헤더, 페이로드 및 서명)으로 구성됩니다.
헤더는 일반적으로 JWT인 토큰 유형과 HMAC SHA256 또는 RSA와 같이 사용되는 서명 알고리즘의 두 부분으로 구성됩니다.
페이로드에는 클레임이 포함되어 있습니다. 클레임은 엔터티(일반적으로 사용자) 및 추가 메타데이터에 대한 설명입니다. 청구에는 등록, 공개, 개인 청구의 세 가지 유형이 있습니다.
서명은 JWT의 발신자가 누구인지 확인하고 메시지가 도중에 변경되지 않았는지 확인하는 데 사용됩니다.
서명을 생성하려면 인코딩된 헤더, 인코딩된 페이로드, 비밀, 헤더에 지정된 알고리즘이 사용됩니다.
토큰 전달 및 채널 보안:
JWT가 생성되면 클라이언트에 안전하게 전달되어야 합니다. 이는 일반적으로 전송 중에 토큰이 암호화되도록 HTTPS를 통해 수행됩니다. 그런 다음 클라이언트는 토큰을 로컬에 저장하고 서버에 대한 각 후속 요청과 함께 토큰을 보냅니다. HTTP 요청에 토큰을 포함하는 표준 방법은 Bearer 스키마와 함께 Authorization 헤더를 사용하고 이어서 인코딩된 JWT를 사용하는 것입니다.
다른 API 서버와의 통신:
클라이언트는 다른 API 서버(서비스 제공자라고도 함)와 통신할 때 Authorization 헤더에 JWT를 보냅니다. 그러면 각 서버는 JWT를 확인할 책임이 있습니다. 이는 JWT를 디코딩하고, 비밀 키 또는 공개 키로 서명을 검증하고, 토큰이 만료되지 않았으며 서버용인지 확인함으로써 수행됩니다. 검증 후 서버는 사용자의 신뢰성을 신뢰하고 API 요청을 처리할 수 있습니다.
JWT는 사용자 상태가 서버 메모리에 저장되지 않으므로 상태 비저장 인증 메커니즘입니다. 서버의 보호된 경로는 Authorization 헤더에서 유효한 JWT를 확인하고, JWT가 있는 경우 사용자는 보호된 리소스에 액세스할 수 있습니다.
Node.js 단일 스레드 특성 및 이벤트 루프:
Node.js는 단일 스레드에서 작동합니다. 즉, 한 번에 하나의 코드 조각을 실행할 수 있습니다. 추가 스레드를 생성하지 않고 여러 작업을 처리하기 위해 Node.js는 이벤트 중심의 비차단 I/O 모델을 사용합니다. 이벤트 루프는 Node.js가 IO가 아닌 작업을 비동기적으로 수행할 수 있도록 하여 이를 촉진합니다.
이벤트 루프는 이벤트(예: HTTP 요청, 파일 I/O 또는 타이머)를 폴링한 다음 해당 이벤트가 감지되면 해당 콜백 함수를 호출하는 방식으로 작동합니다. 이 모델을 사용하면 Node.js가 단일 스레드임에도 불구하고 많은 수의 동시 작업을 처리할 수 있습니다. 작업을 시스템 커널이나 외부 프로세스로 오프로드하여 새로운 수신 이벤트를 처리하기 위해 이벤트 루프를 확보할 수 있는 I/O가 많은 워크로드에 효율적입니다.
이벤트 루프 및 멀티스레딩:
Node.js는 JavaScript 코드 실행을 위한 단일 스레드이지만 일부 작업에는 백그라운드에서 여러 스레드를 사용합니다. 이는 비차단 방식으로 구현되는 파일 I/O 또는 네트워크 통신과 같은 작업을 처리하기 위한 스레드 풀을 제공하는 libuv 라이브러리에 의해 관리됩니다.
Node.js에서는 작업자 스레드를 사용하여 기본 스레드를 차단하지 않고 CPU 집약적인 작업을 수행할 수도 있습니다. 작업자 스레드를 사용하면 새 스레드를 생성하고 병렬 작업을 실행할 수 있습니다. 이 기능은 실행하는 데 오랜 시간이 걸리고 잠재적으로 이벤트 루프를 차단하여 성능이 저하되는 계산에 유용합니다.
'공부 > 면접 준비' 카테고리의 다른 글
[면접준비] MVC패턴 (24/04/30) (0) | 2024.04.30 |
---|---|
[면접준비] MySQL JOIN (24/04/29) (0) | 2024.04.29 |
[면접준비] 해시테이블과 이진 검색 트리 (24/04/24) (0) | 2024.04.24 |
[면접준비] 프로그래밍 패러다임 (24/04/23) (0) | 2024.04.23 |
[면접준비] 아침 면접 준비 - 정규화, 무결성 (24/04/18) (0) | 2024.04.22 |