Autoryzacje w sgcWebSockets

· Funkcje

Biblioteka sgcWebSockets obsługuje wiele metod uwierzytelniania, aby zabezpieczyć komunikację WebSocket w aplikacjach Delphi i C++Builder. Ponieważ protokół WebSocket sam w sobie nie definiuje mechanizmu uwierzytelniania, sgcWebSockets implementuje własny zestaw technik odpowiednich zarówno dla strony serwera, jak i klienta.

Obsługiwane typy uwierzytelniania

Biblioteka obsługuje następujące główne metody uwierzytelniania:

  1. Uwierzytelnianie sesyjne
  2. Uwierzytelnianie przez URL
  3. Uwierzytelnianie podstawowe
  4. OAuth2
  5. JWT (JSON Web Tokens)
  6. WebAuthn (Web Authentication)

1. Uwierzytelnianie sesyjne

 Klient wykonuje żądanie HTTP GET, aby otrzymać token sesji:

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

Serwer odpowiada tokenem, który jest następnie używany w adresie URL WebSocket:

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

Właściwości

Authentication.Enabled := True;

Zalety

Przykład

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

2. Uwierzytelnianie przez URL

Dane uwierzytelniające są zawarte bezpośrednio w adresie URL WebSocket: 

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

Zalety

Wady

3. Uwierzytelnianie podstawowe

Używa standardowego nagłówka HTTP Authorization:

Authorization: Basic base64(user:password)

Właściwości

Authentication.AuthUsers := 'user=password';

Użyj zdarzenia OnAuthentication do niestandardowej walidacji.

Zalety

Przykład

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

end;

4. Uwierzytelnianie OAuth2

OAuth2 jest obsługiwany przez komponenty takie jak TsgcHTTP_OAuth2_Server i TsgcHTTP_OAuth2_Client.
Działa z dostawcami takimi jak Google, Microsoft, Azure AD i niestandardowymi systemami tożsamości.

Kluczowe zdarzenia Zalety


5. Uwierzytelnianie JWT

Uwierzytelnianie jest realizowane przy użyciu JSON Web Tokens (JWT). Tokeny mogą być przekazywane w parametrach zapytania lub w nagłówkach HTTP.

Właściwości

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

Komponenty: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server

Zalety

6. Uwierzytelnianie WebAuthn

WebAuthn jest oparty na standardzie FIDO2 i używa kryptografii kluczem publicznym. Umożliwia uwierzytelnianie bez hasła.

Komponenty

TsgcWSAPIServer_WebAuthn

Zalety

7. Tabela porównawcza