Autorizações no sgcWebSockets

· Recursos

A biblioteca sgcWebSockets oferece suporte a múltiplos métodos de autenticação para proteger a comunicação WebSocket em aplicações Delphi e C++Builder. Como o próprio protocolo WebSocket não define um mecanismo de autenticação, o sgcWebSockets implementa seu próprio conjunto de técnicas adequadas tanto para o lado servidor quanto para o lado cliente.

Tipos de autenticação compatíveis

A biblioteca oferece suporte aos seguintes métodos principais de autenticação:

  1. Autenticação por sessão
  2. Autenticação por URL
  3. Autenticação Basic
  4. OAuth2
  5. JWT (JSON Web Tokens)
  6. WebAuthn (Web Authentication)

1. Autenticação por sessão

 O cliente realiza uma requisição HTTP GET para receber um token de sessão:

http://host:port/sgc/req/auth/session/:user/:password

O servidor responde com um token, que é então usado na URL do WebSocket:

ws://host:port/sgc/auth/session/:token

Propriedades

Authentication.Enabled := True;

Vantagens

Exemplo

Client.URL := 'ws://localhost:443/sgc/auth/session/your-token';

2. Autenticação por URL

As credenciais são incluídas diretamente na URL do WebSocket: 

ws://host:port/sgc/auth/url/username/password

Vantagens

Desvantagens

3. Autenticação Basic

Utiliza o cabeçalho HTTP padrão Authorization:

Authorization: Basic base64(user:password)

Propriedades

Authentication.AuthUsers := 'user=password';

Use o evento OnAuthentication para validação personalizada.

Vantagens

Exemplo

procedure WSServerAuthentication(Connection: TsgcWSConnection; aUser, aPassword: string; var Authenticated: Boolean);
begin
  if (aUser = 'John') and (aPassword = '1234') then
    Authenticated := True;

end;

4. Autenticação OAuth2

OAuth2 é suportado por meio de componentes como TsgcHTTP_OAuth2_Server e TsgcHTTP_OAuth2_Client.
Funciona com provedores como Google, Microsoft, Azure AD e sistemas de identidade personalizados.

Eventos principais Vantagens


5. Autenticação JWT

A autenticação é realizada usando JSON Web Tokens (JWT). Os tokens podem ser enviados tanto na query string quanto em cabeçalhos HTTP.

Propriedades

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

Componentes: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server

Vantagens

6. Autenticação WebAuthn

O WebAuthn é baseado no padrão FIDO2 e utiliza criptografia de chave pública. Permite a autenticação sem senha.

Componentes

TsgcWSAPIServer_WebAuthn

Vantagens

7. Tabela comparativa