La biblioteca sgcWebSockets admite varios métodos de autenticación para proteger la comunicación WebSocket en aplicaciones Delphi y C++ Builder. Como el propio protocolo WebSocket no define un mecanismo de autenticación, sgcWebSockets implementa su propio conjunto de técnicas, adecuadas tanto para el lado del servidor como para el del cliente.
Tipos de autenticación admitidosLa biblioteca admite los siguientes métodos principales de autenticación:
- Autenticación de sesión
- Autenticación por URL
- Autenticación básica
- OAuth2
- JWT (JSON Web Tokens)
- WebAuthn (autenticación web)
1. Autenticación de sesión
El cliente realiza una petición HTTP GET para recibir un token de sesión:
http://host:port/sgc/req/auth/session/:user/:password
El servidor responde con un token, que después se usa en la URL del WebSocket:
ws://host:port/sgc/auth/session/:token
Propiedades
Authentication.Enabled := True;
Ventajas
- Acceso basado en token: seguro y sencillo.
- Adecuado para aplicaciones con un sistema de inicio de sesión.
Ejemplo
Client.URL := 'ws://localhost:443/sgc/auth/session/your-token';
2. Autenticación por URL
Las credenciales se incluyen directamente en la URL del WebSocket:
ws://host:port/sgc/auth/url/username/password
Ventajas
- Muy sencillo de implementar.
- Compatible con clientes WebSocket en el navegador.
Inconvenientes
- Las credenciales quedan expuestas en la URL.
- Solo debería usarse con SSL/TLS.
3. Autenticación básica
Usa la cabecera HTTP estándar Authorization:
Authorization: Basic base64(user:password)
Propiedades
Authentication.AuthUsers := 'user=password';
Usa el evento OnAuthentication para validación personalizada.
- Sencillo y conocido.
- El servidor gestiona una lista de usuarios válidos.
Ejemplo
procedure WSServerAuthentication(Connection: TsgcWSConnection; aUser, aPassword: string; var Authenticated: Boolean);
begin
if (aUser = 'John') and (aPassword = '1234') then
Authenticated := True;
end;
4. Autenticación OAuth2
OAuth2 se admite a través de componentes como TsgcHTTP_OAuth2_Server and TsgcHTTP_OAuth2_Client.
Funciona con proveedores como Google, Microsoft, Azure AD y sistemas de identidad personalizados.
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- Moderno y seguro.
- Muy adecuado para aplicaciones web y entornos en la nube.
5. Autenticación JWT
La autenticación se realiza mediante JSON Web Tokens (JWT). Los tokens pueden pasarse en la query string o en las cabeceras HTTP.
PropiedadesAuthentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
Componentes: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server
Ventajas- Sin estado y escalable.
- Ampliamente adoptado, se integra fácilmente con servicios externos.
6. Autenticación WebAuthn
WebAuthn se basa en el estándar FIDO2 y usa criptografía de clave pública. Permite autenticación sin contraseñas.
ComponentesTsgcWSAPIServer_WebAuthn
Ventajas- Seguridad muy robusta.
- Resistente a phishing y robo de credenciales.
7. Tabla comparativa

