sgcWebSockets ライブラリは、Delphi および C++Builder アプリケーションで WebSocket 通信を保護するための複数の認証方式をサポートしています。WebSocket プロトコル自体は認証メカニズムを定義していないため、sgcWebSockets はサーバー側とクライアント側の両方で利用できる独自の手法を実装しています。
サポートされている認証方式本ライブラリは、次の主要な認証方式をサポートしています:
- セッション認証
- URL 認証
- Basic 認証
- OAuth2
- JWT(JSON Web Tokens)
- WebAuthn(Web Authentication)
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. Basic 認証
標準の 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
- モダンで安全です。
- Web アプリケーションやクラウド環境に最適です。
5. JWT 認証
JSON Web Tokens(JWT)を使用して認証を行います。トークンはクエリ文字列または HTTP ヘッダー経由で渡せます。
プロパティAuthentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
コンポーネント: TsgcHTTP_JWT_Client、TsgcHTTP_JWT_Server
長所- ステートレスでスケーラブルです。
- 広く採用されており、外部サービスとも容易に連携できます。
6. WebAuthn 認証
WebAuthn は FIDO2 標準に基づいており、公開鍵暗号方式を使用します。パスワードレス認証を実現できます。
コンポーネントTsgcWSAPIServer_WebAuthn
長所- 非常に強力なセキュリティです。
- フィッシングや認証情報の盗難に耐性があります。
7. 比較表

