sgcWebSockets の認可機能

· 機能

sgcWebSockets ライブラリは、Delphi および C++Builder アプリケーションで WebSocket 通信を保護するための複数の認証方式をサポートしています。WebSocket プロトコル自体は認証メカニズムを定義していないため、sgcWebSockets はサーバー側とクライアント側の両方で利用できる独自の手法を実装しています。

サポートされている認証方式

本ライブラリは、次の主要な認証方式をサポートしています:

  1. セッション認証
  2. URL 認証
  3. Basic 認証
  4. OAuth2
  5. JWT(JSON Web Tokens)
  6. 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

長所

短所

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_ServerTsgcHTTP_OAuth2_Client といったコンポーネントを通してサポートされます。
Google、Microsoft、Azure AD などのプロバイダや、カスタムの ID システムと連携できます。

主なイベント 長所


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. 比較表