TsgcWSAPIServer_WebAuthn

OpenSSL 3만 해당.

소개

TsgcWSAPIServer_WebAuthn 구성 요소는 WebAuthn Relying Party 서버를 구현하기 위한 간단하지만 강력한 솔루션을 제공하여 웹 애플리케이션에서 비밀번호 없는 인증을 가능하게 합니다. WebAuthn 애플리케이션은 서버 측 등록 및 인증을 처리하는 WebAuthn 서버와 일반적으로 javascript 애플리케이션인 클라이언트 측 애플리케이션으로 구성됩니다.

 

WebAuthn은 보안 연결(SSL/TLS)의 사용을 요구하므로 OpenSSL 라이브러리를 배포하고 서버와 함께 구성해야 합니다.

 

OpenSSL 3.0.0+ API만 지원됩니다. 따라서 이전 OpenSSL 버전은 작동하지 않을 수 있습니다.

 

구성

 

TsgcWSAPIServer_WebAuthn은 Server 속성을 사용하여 HTTP 서버, TsgcWebSocketHTTP_Server 또는 TsgcWebSocketServer_HTTPAPI에 연결되어야 합니다. 등록 및 인증 옵션을 처리할 서버 엔드포인트와, 지원되는 알고리즘, origin 등의 WebAuthn 옵션을 구성할 수 있습니다.

 

Endpoints Options

여기에서 WebAuthn을 인증자로 사용하기 위한 HTTP/JavaScript 요청을 처리할 서버 엔드포인트를 구성할 수 있습니다. 구성 요소는 이미 기본 엔드포인트로 구성되어 있지만, 필요에 맞게 모두 변경할 수 있습니다.

 

 

예: 서버가 도메인 www.test.com에서 수신 중인 경우, 기본적으로 인증 옵션에 대한 요청은 http://www.test.com/sgcWebAuthn/Authentication/Options가 됩니다.

 

WebAuthn Options

이 속성에서 WebAuthn 서버 구성 요소의 주요 옵션을 구성할 수 있습니다.

 

 

WebAuthn은 origin을 사용하여 same-origin 정책 제약 조건을 적용하며, 이는 피싱 및 cross-site 공격을 방지하는 데 필수적입니다. WebAuthn 등록 및 인증 프로세스 중에 origin은 브라우저와 authenticator에 의해 엄격하게 검증됩니다.

 

 

 

WebAuthn에서 crossOrigin은 WebAuthn 작업이 최상위 브라우징 컨텍스트와 다른 origin에서 임베드된 iframe과 같은 교차 origin 컨텍스트에서 수행되는지 여부를 나타내는 boolean 매개변수입니다.

이 매개변수는 브라우저와 인증자가 임베디드 환경에서 인증 요청을 안전하게 처리하도록 돕기 위해 도입되었으며, 이는 최신 웹 애플리케이션에서 일반적인 시나리오입니다.

 

 

WebAuthn은 공개 키 자격 증명 생성 및 검증을 위한 다양한 암호화 알고리즘을 지원합니다. 이 알고리즘들은 자격 증명 등록(navigator.credentials.create() 사용) 및 인증(navigator.credentials.get() 사용) 중에 사용되며, 비대칭 키 쌍을 사용하여 챌린지의 안전한 서명 및 검증을 보장합니다. 서버는 기본적으로 가장 일반적인 알고리즘인 ES256 및 RS256로 구성되어 있습니다. Algorithms 속성에서 어떤 알고리즘을 지원할지 언제든지 변경할 수 있습니다. 다음 알고리즘이 지원됩니다:

 

 

WebAuthn에서 attestation은 선택적 메커니즘으로, authenticator(예: 디바이스 또는 보안 키)가 자격 증명 생성 중에 제조업체, 모델 및 보안 특성에 대한 정보를 제공할 수 있도록 합니다. 이 정보는 Relying Party(RP)가 authenticator를 신뢰할지 여부를 결정하는 데 도움이 됩니다.

 

서로 다른 attestation 형식은 이 데이터가 어떻게 구조화되고 검증되는지를 정의합니다. 일반적으로 사용되는 세 가지 형식은 android-key, packed 및 fido-u2f, apple 또는 none과 같은 기타 형식입니다. 기본적으로 모든 attestation 형식이 활성화되어 있습니다. 지원되는 attestation 형식 목록은 아래에서 확인할 수 있습니다.

 

 

 

 

 

 

 

WebAuthn API에서 AllowCredentials는 인증 프로세스(navigator.credentials.get()을 통한) 중에 사용되는 선택적 필드입니다. 이는 특정 Relying Party(RP)에 대해 사용자를 인증할 수 있도록 허용된 자격 증명 ID 목록을 지정합니다. 이 메커니즘을 통해 RP는 로그인 시도에 어떤 자격 증명이 유효한 것으로 간주되는지 제어할 수 있습니다. credentials 속성에는 다음 필드가 있습니다.

 

 

 

 

WebAuthn Protocol

 

 

 

 

 

참조