devlog_owen
231207 TIL) JWT 인증이란? 본문
JWT ?
JWT(JSON Web Token)은 웹에서 사용되는 토큰 기반의 인증 방식 중 하나로, 클라이언트와 서버 간의 정보를 안전하게 전달하기 위한 방법입니다. 토큰 자체가 모든 정보를 가지고 있어 서버의 세션 저장소에 의존하지 않으며, 클라이언트와 서버 간의 간편한 통신을 가능케 합니다.
JWT는 어떻게 이루어져 있나요?
JWT는 Header(헤더), Payload(페이로드), Signature(서명) 세 부분으로 이루어져 있습니다. 각 부분은 Base64Url로 인코딩되어 있으며, 이들은 각각 "."으로 구분됩니다.
Header: JWT 토큰의 타입과 알고리즘 정보를 담은 JSON 객체입니다.
Payload: 토큰에 포함될 정보를 담은 JSON 객체로, 클라이언트가 서버로 전달하는 데이터를 포함합니다.
Signature: JWT를 인증하기 위한 서명 정보로, Header와 Payload를 비밀 키를 사용하여 서명합니다.
JWT와 세션 중 왜 JWT를 사용하셨나요?
JWT를 선택한 이유는 세션에 비해 서버 자원을 적게 사용하며, 다중 서버로 확장될 때의 문제를 덜 겪기 때문입니다. 클라이언트가 토큰을 가지고 있어 세션처럼 서버에서 상태를 관리할 필요가 없어지며, 서버 부하가 감소합니다.
세션이 JWT에 비해 서버 자원을 많이 사용하는 이유는 무엇인가요?
세션은 인증이나 인가 과정에서 서버 자원에 접근하며, 사용자 데이터를 서버에서 관리하기 때문에 더 많은 서버 자원을 사용합니다. 반면, JWT는 토큰의 payload에 사용자 정보가 포함되어 있어 서버 자원에 접근하지 않고도 인증이나 인가를 수행할 수 있습니다.
JWT가 서버 자원을 전혀 사용하지 않는다는 건가요?
아닙니다. JWT는 access token과 refresh token으로 이중으로 나누어 사용하며, refresh token은 서버에서 관리됩니다. 로그아웃이나 토큰 갱신 시에 서버 자원을 사용합니다.
보안 관련해서 JWT의 취약점이 있나요?
토큰이 노출될 경우, access token을 무효화하기 어렵습니다. 만료 시간을 짧게 설정하거나, 만료된 토큰을 서버에 저장하여 검증하는 방법을 사용하여 보안을 강화할 수 있습니다.
다중 서버가 되었을 때 JWT가 문제 없이 사용되는 이유는 무엇인가요??
클라이언트가 토큰을 가지고 있어 서버 간에 토큰을 전달하거나 동기화할 필요가 없기 때문에 다중 서버 상황에서도 문제 없이 사용됩니다.
JWT는 클라이언트 측에서 어디에 저장되나요?
일반적으로 웹 애플리케이션에서는 브라우저의 로컬 스토리지, 세션 스토리지, 쿠키 등에 저장됩니다. 모바일 애플리케이션에서는 로컬 스토리지나 앱 내 데이터베이스에 저장될 수 있습니다.
쿠키와 세션의 장단점에 대해서 설명해주세요.
쿠키는 클라이언트 측에서 처리되며 브라우저 캐시에 저장되어 빠른 데이터 전송 속도를 제공하지만, 브라우저 설정에 따라 거부될 수 있고 보안상의 문제가 있을 수 있습니다.
세션은 서버에 저장되므로 보안성이 높으며 용량 제한이 없어 대용량 데이터를 저장하기에 적합하지만, 서버 부하가 증가하고 쿠키에 비해 느린 속도를 보일 수 있습니다.
오늘 JWT 특강을 듣고 나서 따로 정리해봤다. 나중에 면접에서 JWT에 관한 질문답변을 대비해서라도 개념정리를 잘 준비해야할 것 같다.
https://velog.io/@cis07385/%EB%A9%B4%EC%A0%91-%EC%98%88%EC%83%81-%EC%A7%88%EB%AC%B83
면접 예상 질문(3)
JWT는 JSON Web Token의 약자로, 웹에서 사용되는 토큰 기반의 인증 방식 중 하나입니다. JWT는 토큰 자체가 모든 정보를 가지고 있기 때문에 서버의 세션 저장소에 정보를 저장할 필요가 없으며, 사용
velog.io
'TIL' 카테고리의 다른 글
231208 TIL) 알고리즘, 개인프로젝트 (0) | 2023.12.09 |
---|---|
231207 TIL) 3-Layered Architecture 란? (0) | 2023.12.08 |
231205 TIL) 깃허브 기존 소스코드 복사해서 새로운 레파지토리 생성하기 (0) | 2023.12.06 |
231204 TIL)jsonwebtoken, express-session 이란?/수직적 확장/ 수평적 확장이란? (0) | 2023.12.05 |
231130 TIL) 숙련강의 시청, 개인프로젝트 (0) | 2023.12.01 |