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íveisA biblioteca oferece suporte aos seguintes métodos principais de autenticação:
- Autenticação por sessão
- Autenticação por URL
- Autenticação Basic
- OAuth2
- JWT (JSON Web Tokens)
- 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
- O acesso baseado em token é seguro e simples.
- Adequado para aplicações com sistema de login.
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
- Muito simples de implementar.
- Compatível com clientes WebSocket baseados em navegador.
Desvantagens
- As credenciais ficam expostas na URL.
- Deve ser usada apenas com SSL/TLS.
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.
- Simples e familiar.
- O servidor gerencia uma lista de usuários válidos.
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.
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- Moderno e seguro.
- Ideal para aplicações web e ambientes de nuvem.
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.
PropriedadesAuthentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
Componentes: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server
Vantagens- Stateless e escalável.
- Amplamente adotado, integra-se facilmente com serviços externos.
6. Autenticação WebAuthn
O WebAuthn é baseado no padrão FIDO2 e utiliza criptografia de chave pública. Permite a autenticação sem senha.
ComponentesTsgcWSAPIServer_WebAuthn
Vantagens- Segurança muito forte.
- Resistente a phishing e roubo de credenciais.
7. Tabela comparativa

