Hypercerts

신원

SD-JWT VC 발급·검증 운영 콘솔

발급자와 검증자는 법적으로 다른 주체입니다. 콘솔을 하나로 합치면 한쪽 세션으로 다른 쪽 데이터에 닿습니다. 두 콘솔을 별도 애플리케이션으로 분리 배포하고, 토큰 저장소의 네임스페이스까지 갈랐습니다.

발주처
LordSystem
규모
발급자 콘솔 8화면 · 검증자 콘솔 8화면 · UI 6개국어
상태
납품 완료

기술 스택

  • React 18
  • Vite 6
  • TypeScript
  • Tailwind CSS
  • Spring Boot 3.4
  • NestJS 10

무엇이 어려웠나

01

발급자와 검증자의 콘솔을 어디까지 분리할 것인가

신뢰 삼각형에서 발급자와 검증자는 법적으로 다른 주체입니다. 운영 편의만 보면 콘솔 하나에 두 기능을 넣는 편이 낫지만, 그러면 한쪽 운영자의 세션으로 다른 쪽 데이터에 닿을 수 있게 됩니다. 두 콘솔을 별도 애플리케이션으로 분리 배포하고, 토큰 저장소의 네임스페이스까지 갈라 한쪽 토큰이 다른 쪽에서 통하지 않도록 했습니다. 공유 컴포넌트는 별도 패키지로 두어 중복 없이 유지하되, 인증 상태만은 절대 공유하지 않는 구조입니다.

02

감사 로그의 무결성을 운영자가 화면에서 확인할 수 있게 하기

전자금융감독규정이 요구하는 것은 로그 보존이지만, 실무에서 문제가 되는 것은 "이 로그가 조작되지 않았음을 어떻게 보이느냐"입니다. 각 이벤트가 직전 이벤트의 해시를 포함하는 해시 체인으로 기록하고, 콘솔에 무결성 재검증 버튼을 두었습니다. 누르면 전체 체인을 다시 계산해 검증 결과를 보여줍니다. 감사 대응 시 JSONL로 내보내 그대로 제출할 수 있습니다.

03

권한 변경 경로를 UI에 두지 않기

운영자 역할은 온체인 역할 제어 컨트랙트가 관리합니다. 콘솔에서 권한을 바꿀 수 있게 만들면 편하지만, 그 순간 콘솔 계정 탈취가 곧 권한 탈취가 됩니다. RBAC 화면을 읽기 전용 인벤토리로만 만들고, 부여·회수는 체인 트랜잭션으로만 가능하게 남겨 두었습니다. 불편을 감수하고 얻은 것은 "권한 변경은 반드시 체인에 기록된다"는 성질입니다.

산출물관리자 웹 기획서 · 화면 설계서 · 운영 매뉴얼


화면

개인정보와 식별자는 마스킹 처리했습니다. 전체 갤러리는 Veritra 페이지에 있습니다.

비슷한 문제를 풀고 계신가요?

어느 단계에서 막혀 있는지 들으면, 같은 자리에서 저희가 무엇을 했는지 말씀드릴 수 있습니다.