sgcWebSockets 라이브러리는 Delphi 및 C++Builder 애플리케이션에서 WebSocket 통신을 보호하기 위한 다양한 인증 방법을 지원해요. WebSocket 프로토콜 자체에는 인증 메커니즘이 정의되어 있지 않아 sgcWebSockets는 서버와 클라이언트 모두에 적합한 자체 기술 세트를 구현했어요.
지원 인증 유형라이브러리는 다음 주요 인증 방법을 지원해요:
- 세션 인증
- URL 인증
- 기본 인증
- OAuth2
- JWT (JSON Web Tokens)
- WebAuthn (Web 인증)
1. 세션 인증
클라이언트는 HTTP GET 요청을 수행해 세션 토큰을 받아요:
http://host:port/sgc/req/auth/session/:user/:password
서버는 토큰으로 응답하며, 이 토큰은 WebSocket URL에 사용돼요:
ws://host:port/sgc/auth/session/:token
속성
Authentication.Enabled := True;
장점
- 토큰 기반 접근으로 안전하고 간단해요.
- 로그인 시스템이 있는 애플리케이션에 적합해요.
예제
Client.URL := 'ws://localhost:443/sgc/auth/session/your-token';
2. URL 인증
자격 증명이 WebSocket URL에 직접 포함돼요:
ws://host:port/sgc/auth/url/username/password
장점
- 구현이 매우 간단해요.
- 브라우저 기반 WebSocket 클라이언트와 호환돼요.
단점
- URL에 자격 증명이 노출돼요.
- SSL/TLS와 함께만 사용해야 해요.
3. 기본 인증
표준 HTTP Authorization 헤더를 사용해요:
Authorization: Basic base64(user:password)
속성
Authentication.AuthUsers := 'user=password';
사용자 정의 검증에는 OnAuthentication 이벤트를 사용하세요.
- 간단하고 친숙해요.
- 서버가 유효한 사용자 목록을 관리해요.
예제
procedure WSServerAuthentication(Connection: TsgcWSConnection; aUser, aPassword: string; var Authenticated: Boolean);
begin
if (aUser = 'John') and (aPassword = '1234') then
Authenticated := True;
end;
4. OAuth2 인증
OAuth2는 TsgcHTTP_OAuth2_Server 및 TsgcHTTP_OAuth2_Client 같은 컴포넌트를 통해 지원돼요.
Google, Microsoft, Azure AD 및 맞춤 ID 시스템과 같은 공급자와 함께 작동해요.
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- 현대적이고 안전해요.
- 웹 애플리케이션과 클라우드 환경에 적합해요.
5. JWT 인증
JSON Web Token(JWT)을 사용해 인증을 수행해요. 토큰은 쿼리 문자열이나 HTTP 헤더로 전달할 수 있어요.
속성Authentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
컴포넌트: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server
장점- 상태 비저장 방식이며 확장 가능해요.
- 널리 채택되어 외부 서비스와 쉽게 통합돼요.
6. WebAuthn 인증
WebAuthn은 FIDO2 표준을 기반으로 공개 키 암호화를 사용해요. 비밀번호 없는 인증을 가능하게 해요.
컴포넌트TsgcWSAPIServer_WebAuthn
장점- 매우 강력한 보안이에요.
- 피싱 및 자격 증명 도용에 강해요.
7. 비교 표

