WebAuthn Server

· 기능

From sgcWebSockets 2025.4.0 Enterprise, the  WebAuthn Protocol is supported (currently in BETA). 

WebAuthn(웹 인증)은 웹에서 안전한 비밀번호 없는 인증을 활성화하기 위해 W3C(World Wide Web Consortium)와 FIDO Alliance가 개발한 웹 표준이에요. 더 넓은 FIDO2 프레임워크의 일부이며 피싱, 자격 증명 스터핑 등의 공격에 자주 취약한 전통적인 비밀번호 의존도를 줄이는 것을 목표로 해요.

핵심적으로 WebAuthn은 공개 키 암호화를 사용해 사용자를 인증해요. 사용자 이름과 비밀번호 대신 사용자가 웹 애플리케이션(신뢰 당사자)에 고유한 공개-개인 키 쌍을 등록해요. 개인 키는 하드웨어 보안 키, 스마트폰, 내장 생체 인식 디바이스 같은 인증자에 안전하게 저장되고, 공개 키는 서버에 저장돼요.

인증 시 서버가 사용자의 개인 키로 서명해야 하는 챌린지를 발급해요. 서명된 챌린지가 반환되고 저장된 공개 키로 검증되어 응답의 무결성과 출처를 모두 보장해요. 이 접근 방식은 자격 증명이 가로채이거나 재사용되는 것을 방지해요.

WebAuthn은 다양한 인증자와 디바이스를 지원해 개발자와 사용자 모두에게 유연해요. PIN이나 생체 인식 같은 다른 요소와 결합하면 다단계 인증(MFA)도 활성화해 사용성을 희생하지 않고 보안을 크게 향상시켜요.

지원 증명 형식

다양한 증명 형식이 이 데이터를 구조화하고 검증하는 방법을 정의해요. 일반적으로 사용되는 형식으로는 android-key, packed, fido-u2f, apple, none 등이 있어요. 기본적으로 모든 증명 형식이 활성화되어 있어요. 아래에서 지원되는 증명 형식 목록을 확인할 수 있어요:


WebAuthn 흐름


WebAuthn 서버 컴포넌트

TsgcWSAPIServer_WebAuthn 컴포넌트는 WebAuthn 신뢰 당사자 서버를 구현해 웹 애플리케이션에서 비밀번호 없는 인증을 활성화하는 간단하지만 강력한 솔루션을 제공해요. WebAuthn 애플리케이션은 서버 측 등록과 인증을 처리하는 WebAuthn 서버와 일반적으로 JavaScript 애플리케이션인 클라이언트 측 애플리케이션으로 구성돼요.


아래에서 WebAuthn 서버의 간단한 설정을 확인할 수 있어요:


  // ... create the servers
  HTTPServer := TsgcWebSocketHTTPServer.Create(nil);
  WebAuthnServer := TsgcWSAPIServer_WebAuthn.Create(nil);
  WebAuthnServer.Server := HTTPServer;
  // ... enable for testing
  WebAuthnServer.EndpointsOptions.Test.Enabled := True;
  // ... WebAuthn options
  WebAuthnServer.WebAuthnOptions.RelyingParty := 'localhost';
  // ... bindings
  Server.Port := 443;
  HTTPServer.SSLOptions.Port := 443;
  HTTPServer.Bindings.Clear;
  With HTTPServer.Bindings.Add do
  begin
    Port := 443;
    IP := '127.0.0.1';
  end;
  HTTPServer.SSLOptions.Certificate := 'sgc.pem';
  HTTPServer.SSLOptions.KeyFile := 'sgc.pem';  
  HTTPServer.SSL := True;
  // ... active
  HTTPServer.Active := True; 

Delphi WebAuthn 서버 데모

The following Delphi WebAuthn Demo shows how to register a new credential and use after to authenticate the user.