Die sgcWebSockets-Bibliothek unterstützt mehrere Authentifizierungsmethoden, um die WebSocket-Kommunikation in Delphi- und C++Builder-Anwendungen abzusichern. Da das WebSocket-Protokoll selbst keinen Authentifizierungsmechanismus definiert, implementiert sgcWebSockets eigene Verfahren, die sowohl für die Server- als auch für die Client-Seite geeignet sind.
Unterstützte AuthentifizierungstypenDie Bibliothek unterstützt die folgenden Haupt-Authentifizierungsmethoden:
- Session Authentication
- URL Authentication
- Basic Authentication
- OAuth2
- JWT (JSON Web Tokens)
- WebAuthn (Web Authentication)
1. Session Authentication
Der Client führt einen HTTP-GET-Request aus, um ein Session-Token zu erhalten:
http://host:port/sgc/req/auth/session/:user/:password
Der Server antwortet mit einem Token, das dann in der WebSocket-URL verwendet wird:
ws://host:port/sgc/auth/session/:token
Eigenschaften
Authentication.Enabled := True;
Vorteile
- Token-basierter Zugriff ist sicher und einfach.
- Geeignet für Anwendungen mit einem Login-System.
Beispiel
Client.URL := 'ws://localhost:443/sgc/auth/session/your-token';
2. URL Authentication
Die Anmeldedaten werden direkt in der WebSocket-URL übergeben:
ws://host:port/sgc/auth/url/username/password
Vorteile
- Sehr einfach zu implementieren.
- Kompatibel mit browserbasierten WebSocket-Clients.
Nachteile
- Die Anmeldedaten sind in der URL sichtbar.
- Sollte nur mit SSL/TLS verwendet werden.
3. Basic Authentication
Verwendet den Standard-HTTP-Header Authorization:
Authorization: Basic base64(user:password)
Eigenschaften
Authentication.AuthUsers := 'user=password';
Verwende das Ereignis OnAuthentication für eine eigene Validierung.
- Einfach und vertraut.
- Der Server verwaltet eine Liste gültiger Nutzer.
Beispiel
procedure WSServerAuthentication(Connection: TsgcWSConnection; aUser, aPassword: string; var Authenticated: Boolean);
begin
if (aUser = 'John') and (aPassword = '1234') then
Authenticated := True;
end;
4. OAuth2-Authentifizierung
OAuth2 wird über Komponenten wie TsgcHTTP_OAuth2_Server und TsgcHTTP_OAuth2_Client unterstützt.
Funktioniert mit Anbietern wie Google, Microsoft, Azure AD und eigenen Identitätssystemen.
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- Modern und sicher.
- Gut geeignet für Webanwendungen und Cloud-Umgebungen.
5. JWT-Authentifizierung
Die Authentifizierung erfolgt über JSON Web Tokens (JWT). Die Tokens können entweder im Query-String oder in HTTP-Headern übergeben werden.
EigenschaftenAuthentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
Komponenten: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server
Vorteile- Zustandslos und skalierbar.
- Weit verbreitet, lässt sich leicht in externe Dienste integrieren.
6. WebAuthn-Authentifizierung
WebAuthn basiert auf dem FIDO2-Standard und nutzt asymmetrische Kryptographie. Sie ermöglicht eine passwortlose Authentifizierung.
KomponentenTsgcWSAPIServer_WebAuthn
Vorteile- Sehr starke Sicherheit.
- Widerstandsfähig gegen Phishing und Credential-Diebstahl.
7. Vergleichstabelle

