Autorizaciones en sgcWebSockets

· Features

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 admitidos

La biblioteca admite los siguientes métodos principales de autenticación:

  1. Autenticación de sesión
  2. Autenticación por URL
  3. Autenticación básica
  4. OAuth2
  5. JWT (JSON Web Tokens)
  6. 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

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

Inconvenientes

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.

Ventajas

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.

Eventos clave Ventajas


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.

Propiedades

Authentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader

Componentes: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server

Ventajas

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.

Componentes

TsgcWSAPIServer_WebAuthn

Ventajas

7. Tabla comparativa