TsgcWebSocketProxyServer › Właściwości › Authentication
Włącza i konfiguruje uwierzytelnianie użytkownik/hasło dla przychodzących klientów WebSocket łączących się z serwerem proxy.
property Authentication: TsgcWSAuthenticationServer_Options read FAuthentication write SetAuthentication;
Enabled=False
Gdy Authentication.Enabled ma wartość True, proxy uwierzytelnia każde przychodzące połączenie downstream na podstawie listy AuthUsers (format user=password w każdej linii) przed otwarciem odpowiedniego łącza do serwera upstream zdefiniowanego w Proxy. Obsługiwane są trzy wbudowane schematy: Session (klient najpierw wykonuje HTTP GET, otrzymuje identyfikator sesji, a następnie otwiera WebSocket przekazując ten identyfikator jako parametr), URL (nazwa użytkownika i hasło są przesyłane w ciągu zapytania uzgadniania WebSocket) oraz Basic (HTTP Basic Access Authentication). Zdarzenie OnAuthentication umożliwia podłączenie własnej weryfikacji poświadczeń; OnUnknownAuthentication obsługuje niestandardowe schematy, takie jak Bearer/JWT. Uwierzytelnianie jest wykonywane wyłącznie po stronie downstream; proxy nie przekazuje automatycznie poświadczeń do serwera upstream.
Negotiate (Kerberos / SPNEGO, z awaryjnym użyciem NTLM w systemie Windows) jest konfigurowane w podwłaściwościach Authentication.Negotiate i wymaga sgcWebSockets Enterprise Edition. Negotiate.Enabled (Boolean, domyślnie False) włącza je i wymaga Authentication.Enabled. Negotiate.ServicePrincipal (String) to opcjonalna nazwa SPN, taka jak HTTP/host.example.com@EXAMPLE.COM; gdy jest pusta, akceptowany jest dowolny klucz z pliku keytab lub konto komputera. Negotiate.Keytab (String, tylko Linux) to ścieżka do pliku keytab usługi; gdy jest pusta, używana jest zmienna KRB5_KTNAME lub wartość domyślna systemu. Wynik jest zgłaszany przez OnNegotiateAuthentication. Zobacz Uwierzytelnianie Kerberos i Negotiate.
oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.Authentication.Enabled := true;
oProxy.Authentication.Basic.Enabled := true;
oProxy.Authentication.AuthUsers.Add('user=secret');
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 8080;
oProxy.Active := true;