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 uwierzytelnianiaBiblioteka obsługuje następujące główne metody uwierzytelniania:
- Uwierzytelnianie sesyjne
- Uwierzytelnianie przez URL
- Uwierzytelnianie podstawowe
- OAuth2
- JWT (JSON Web Tokens)
- 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
- Dostęp oparty na tokenie sprawia, że jest bezpieczny i prosty.
- Odpowiedni dla aplikacji z systemem logowania.
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
- Bardzo prosta implementacja.
- Kompatybilna z klientami WebSocket opartymi na przeglądarce.
Wady
- Dane uwierzytelniające są widoczne w URL.
- Należy używać wyłącznie z SSL/TLS.
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.
- Prosta i dobrze znana.
- Serwer zarządza listą prawidłowych użytkowników.
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.
- OnOAuth2Authentication
- OnOAuth2AfterAccessToken
- Nowoczesny i bezpieczny.
- Dobrze nadaje się do aplikacji internetowych i środowisk chmurowych.
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ściAuthentication.TokenParam := srctQuery
Authentication.TokenParam := srctHeader
Komponenty: TsgcHTTP_JWT_Client, TsgcHTTP_JWT_Server
Zalety- Bezstanowe i skalowalne.
- Powszechnie stosowane, łatwo integruje się z zewnętrznymi serwisami.
6. Uwierzytelnianie WebAuthn
WebAuthn jest oparty na standardzie FIDO2 i używa kryptografii kluczem publicznym. Umożliwia uwierzytelnianie bez hasła.
KomponentyTsgcWSAPIServer_WebAuthn
Zalety- Bardzo wysoki poziom bezpieczeństwa.
- Odporny na phishing i kradzież poświadczeń.
7. Tabela porównawcza

