sgcWebSockets 库支持多种身份验证方法,以保护 Delphi 和 C++Builder 应用程序中的 WebSocket 通信。由于 WebSocket 协议本身未定义身份验证机制,sgcWebSockets 实现了自己的一套技术,适用于服务器端和客户端。
支持的身份验证类型该库支持以下主要身份验证方法:
- 会话身份验证
- URL 身份验证
- 基本身份验证
- OAuth2
- JWT(JSON Web 令牌)
- WebAuthn(Web 身份验证)
1. 会话身份验证
客户端执行 HTTP GET 请求以接收会话令牌:
http://host:port/sgc/req/auth/session/:user/:password
服务器响应一个令牌,然后在 WebSocket URL 中使用该令牌:
ws://host:port/sgc/auth/session/:token
属性
Authentication.Enabled := True;
优点
- 基于令牌的访问使其既安全又简单。
- 适合具有登录系统的应用程序。
示例
Client.URL := 'ws://localhost:443/sgc/auth/session/your-token';
2. URL 身份验证
凭证直接包含在 WebSocket URL 中:
ws://host:port/sgc/auth/url/username/password
优点
- 实现非常简单。
- 与基于浏览器的 WebSocket 客户端兼容。
缺点
- 凭证暴露在 URL 中。
- 应仅与 SSL/TLS 配合使用。
3. 基本身份验证
使用标准 HTTP Authorization 头部:
Authorization: Basic base64(user:password)
属性
Authentication.AuthUsers := 'user=password';
使用 OnAuthentication 事件进行自定义验证。
- 简单且熟悉。
- 服务器管理有效用户列表。
示例
procedure WSServerAuthentication(Connection: TsgcWSConnection; aUser, aPassword: string; var Authenticated: Boolean);
begin
if (aUser = 'John') and (aPassword = '1234') then
Authenticated := True;
end;
4. OAuth2 身份验证
OAuth2 通过 TsgcHTTP_OAuth2_Server 和 TsgcHTTP_OAuth2_Client 等组件得到支持。
可与 Google、Microsoft、Azure AD 以及自定义身份系统等提供商配合使用。
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- 现代且安全。
- 非常适合 Web 应用程序和云环境。
5. JWT 身份验证
使用 JSON Web 令牌(JWT)执行身份验证。令牌可以通过查询字符串或 HTTP 头部传递。
属性Authentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
组件: TsgcHTTP_JWT_Client、TsgcHTTP_JWT_Server
优点- 无状态且可扩展。
- 被广泛采用,与外部服务集成方便。
6. WebAuthn 身份验证
WebAuthn 基于 FIDO2 标准并使用公钥加密,支持无密码身份验证。
组件TsgcWSAPIServer_WebAuthn
优点- 安全性非常强。
- 可抵御网络钓鱼和凭证盗窃。
7. 对比表

