피드로 돌아가기
Dev.toSecurity
원문 읽기
Web Crypto API 기반 Zero-Dependency 클라이언트 사이드 JWT 검증기 구현
How I built a zero-dependency, 100% client-side JWT Verifier using the Web Crypto API
AI 요약
Context
기존 JWT 분석 도구의 외부 서버 전송 방식에 따른 민감 정보 및 PII 유출 위험 존재. 라이브러리 의존성 없이 브라우저 네이티브 API만으로 동작하는 프라이버시 우선 설계 필요성 대두.
Technical Solution
- Base64URL 특성 반영을 위해 표준 Base64로 정규화 후 atob()를 활용한 데이터 디코딩 로직 구현
- window.crypto.subtle API를 통한 HS256 shared secret 기반의 HMAC 서명 검증 프로세스 구축
- PEM 포맷의 Public Key에서 헤더 제거 및 ArrayBuffer 변환을 통한 RS256 spki 키 임포트 및 검증 체계 설계
- 서버 간 시간 불일치로 인한 오탐 방지를 위해 Clock Skew 오프셋을 적용한 exp/nbf 클레임 검증 로직 도입
- 외부 라이브러리 및 백엔드 통신을 완전히 제거한 100% Client-side 처리 아키텍처 실현
실천 포인트
- JWT 디코딩 시 Base64와 Base64URL의 문자셋 차이 및 패딩 처리 여부 확인 - RS256 검증 시 PEM 문자열을 spki 포맷의 ArrayBuffer로 정확히 변환했는지 검토 - 분산 시스템의 시간 동기화 오차를 고려한 Clock Skew 허용 범위 설정 적용