피드로 돌아가기
Dev.toSecurity
원문 읽기
Backend 없는 Web Crypto API 기반 PWA 간 HMAC-SHA256 인증 구현
Signed token between two PWAs: HMAC-SHA256 with no backend
AI 요약
Context
서로 다른 Firebase 프로젝트로 운영되는 두 PWA 간에 사용자 identity 공유가 필요한 상황. Shared Database나 통합 Authentication 인프라가 없는 제약 조건으로 인해 최소 비용의 신원 전달 체계 구축이 요구됨.
Technical Solution
- Web Crypto API를 활용하여 브라우저 네이티브 환경에서 HMAC-SHA256 서명 생성 및 검증 로직 설계
- JWT 구조를 벤치마킹하여
signature.payload형태의 토큰을 생성하고 URL Query Parameter를 통해 상태 전달 - Shared Secret을 양측 클라이언트에 공유하여 별도의 서버 통신 없이 서명 일치 여부로 데이터 무결성 확보
- Token TTL을 5분으로 제한하여 탈취된 토큰의 유효 기간을 최소화하는 보안 장치 마련
- history.replaceState를 통한 URL 파라미터 즉시 제거로 브라우저 히스토리에 토큰 노출 방지
- sessionStorage 및 CustomEvent를 활용해 검증된 사용자 정보를 애플리케이션 전역 상태로 전파
실천 포인트
1. Web Crypto API의 `importKey`와 `sign`/`verify` 함수를 통한 네이티브 HMAC 구현 검토
2. 민감 정보가 포함되지 않은 내부 툴의 경우, 클라이언트 사이드 Shared Secret 활용 가능 여부 판단
3. URL 기반 토큰 전달 시 `history.replaceState`를 통한 즉각적인 흔적 제거 적용
4. 클라이언트 사이드 토큰의 짧은 TTL(Time-To-Live) 설정으로 리플레이 공격 위험 완화