De sgcWebSockets-bibliotheek ondersteunt meerdere authenticatiemethoden om WebSocket-communicatie in Delphi- en C++Builder-toepassingen te beveiligen. Omdat het WebSocket-protocol zelf geen authenticatiemechanisme definieert, implementeert sgcWebSockets een eigen set technieken die geschikt zijn voor zowel server- als client-zijde.
Ondersteunde authenticatietypesDe bibliotheek ondersteunt de volgende belangrijkste authenticatiemethoden:
- Session-authenticatie
- URL-authenticatie
- Basic-authenticatie
- OAuth2
- JWT (JSON Web Tokens)
- WebAuthn (Web Authentication)
1. Session-authenticatie
De client doet een HTTP GET-verzoek om een sessietoken te ontvangen:
http://host:port/sgc/req/auth/session/:user/:password
De server antwoordt met een token, dat vervolgens in de WebSocket-URL wordt gebruikt:
ws://host:port/sgc/auth/session/:token
Eigenschappen
Authentication.Enabled := True;
Voordelen
- Token-gebaseerde toegang maakt het veilig en eenvoudig.
- Geschikt voor toepassingen met een inlogsysteem.
Voorbeeld
Client.URL := 'ws://localhost:443/sgc/auth/session/your-token';
2. URL-authenticatie
De inloggegevens worden direct in de WebSocket-URL meegegeven:
ws://host:port/sgc/auth/url/username/password
Voordelen
- Heel eenvoudig te implementeren.
- Compatibel met browser-gebaseerde WebSocket-clients.
Nadelen
- Inloggegevens zijn zichtbaar in de URL.
- Mag alleen worden gebruikt met SSL/TLS.
3. Basic-authenticatie
Gebruikt de standaard HTTP-header Authorization:
Authorization: Basic base64(user:password)
Eigenschappen
Authentication.AuthUsers := 'user=password';
Gebruik het OnAuthentication-event voor eigen validatie.
- Eenvoudig en vertrouwd.
- Server beheert een lijst met geldige gebruikers.
Voorbeeld
procedure WSServerAuthentication(Connection: TsgcWSConnection; aUser, aPassword: string; var Authenticated: Boolean);
begin
if (aUser = 'John') and (aPassword = '1234') then
Authenticated := True;
end;
4. OAuth2-authenticatie
OAuth2 wordt ondersteund via componenten zoals TsgcHTTP_OAuth2_Server en TsgcHTTP_OAuth2_Client.
Het werkt met providers zoals Google, Microsoft, Azure AD en eigen identity-systemen.
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- Modern en veilig.
- Goed geschikt voor webtoepassingen en cloud-omgevingen.
5. JWT-authenticatie
Authenticatie gebeurt met JSON Web Tokens (JWT). Tokens kunnen worden meegegeven in de querystring of in HTTP-headers.
EigenschappenAuthentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
Componenten: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server
Voordelen- Stateless en schaalbaar.
- Breed geadopteerd, integreert gemakkelijk met externe services.
6. WebAuthn-authenticatie
WebAuthn is gebaseerd op de FIDO2-standaard en gebruikt public key-cryptografie. Het maakt wachtwoordloze authenticatie mogelijk.
ComponentenTsgcWSAPIServer_WebAuthn
Voordelen- Zeer sterke beveiliging.
- Bestand tegen phishing en diefstal van inloggegevens.
7. Vergelijkingstabel

