sgcWebSockets Authorizations

· 功能

sgcWebSockets 库支持多种身份验证方法,以保护 DelphiC++Builder 应用程序中的 WebSocket 通信。由于 WebSocket 协议本身未定义身份验证机制,sgcWebSockets 实现了自己的一套技术,适用于服务器端和客户端。

支持的身份验证类型

该库支持以下主要身份验证方法:

  1. 会话身份验证
  2. URL 身份验证
  3. 基本身份验证
  4. OAuth2
  5. JWT(JSON Web 令牌)
  6. 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

优点

缺点

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_ServerTsgcHTTP_OAuth2_Client 等组件得到支持。
可与 Google、Microsoft、Azure AD 以及自定义身份系统等提供商配合使用。

关键事件 优点


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. 对比表