sgcWebSockets WebAuthn 서버 심층 분석

· 컴포넌트

TsgcWSAPIServer_WebAuthn 컴포넌트는 HTTPS 위에서 WebAuthn 프로토콜의 의존 당사자(relying-party) 측을 구현하는 Delphi/FPC 서버 모듈이에요. TsgcWebSocketHTTPServer 또는 TsgcWebSocketServer와 통합되며, 등록과 인증을 위한 REST 형태의 엔드포인트를 제공해요. 

엔드포인트 동작 방식

기본적으로 컴포넌트는 /sgcWebAuthn 아래에 라우트를 등록해요.

용도기본 엔드포인트설명
등록 옵션/Registration/Options클라이언트가 navigator.credentials.create를 호출하기 전에 challenge와 relying-party 정보를 요청해요
등록 확인/Registration/Verify브라우저가 서버 검증을 위해 새 자격 증명, attestation 객체, 클라이언트 데이터를 전송해요
인증 옵션/Authentication/Options서버가 허용된 자격 증명 ID 목록과 challenge를 제공해요
인증 확인/Authentication/Verify브라우저가 검증을 위해 어설션(authenticatorData + 서명)을 전송해요
JavaScript 헬퍼/Webauthn표준 WebAuthn 브라우저 호출을 감싸는 헬퍼 스크립트를 제공해요
테스트 페이지/Test개발용으로 API를 손쉽게 시험해 볼 수 있는 HTML 페이지예요


엔드포인트는 기존 라우팅 체계에 맞추기 위해 EndpointOptions로 재매핑할 수 있어요. 

핵심 속성

  1. RelyingParty (RPID / RPName) – 자격 증명에 대한 논리적 도메인을 식별하는 필수 DNS 이름이에요. 애플리케이션의 유효 도메인과 일치하는지 확인해 주세요.
  2. Origins & TopOrigins – 세미콜론으로 구분된 유효 origin 목록이에요. Origins는 기본 도메인을 다루고, TopOrigins는 iframe에 임베드할 때 사용돼요.
  3. AllowCrossOriginsTrue로 설정하면 cross-origin iframe이 인증을 요청할 수 있어요. 이때는 TopOrigins를 신중하게 큐레이션하고 서버 측 검증이 필요해요.
  4. Algorithms – 지원하는 COSE 알고리즘 식별자(예: ES256, RS256, EdDSA)예요. 서버가 어떤 공개키 종류를 받아들일지 제어해요.
  5. TimeoutMS – WebAuthn 작업을 완료하기 위해 클라이언트에 권장되는 타임아웃이에요.
  6. UserVerification – 사용자 검증 정책이에요(preferred, required, discouraged).
  7. Attestation – attestation을 none, indirect, direct 중 무엇으로 할지 지정해요. Direct attestation은 attestation 인증서 체인 검증이 필요해요.
  8. Metadata Service (MDS) – 활성화하면 컴포넌트가 FIDO Metadata Service 파일을 참조해 인증기 모델의 신뢰성을 확인해요. 필드는 다음과 같아요.
    • MDS_FileName – 로컬에 캐시된 JSON 메타데이터(FIDO에서 다운로드).
    • RootCert_FileName – 메타데이터 서명을 검증하는 루트 인증서.
  9. ChallengeOptions – 생성되는 challenge의 길이와 난수 소스를 커스터마이징할 수 있어요.
  10. CredentialStorage – 직접적인 속성은 아니지만, 컴포넌트는 애플리케이션이 자격 증명 공개키, 서명 카운터, 사용자 핸들을 영속화할 것으로 가정해요.

이벤트 생명주기

등록

인증

이러한 이벤트로 옵션 생성부터 어설션 처리까지 프로토콜의 모든 단계를 세밀하게 제어할 수 있어요.