Kerberos- en Negotiate-authenticatie

Ondersteund door

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketProxyServer

TsgcWebSocketServer_HTTPAPI

*Vereist sgcWebSockets Enterprise Edition. In andere edities genereert het starten van een server met ingeschakelde Negotiate de uitzondering "Negotiate authentication requires sgcWebSockets Enterprise".

Overzicht

Negotiate is het HTTP-authenticatieschema achter de geïntegreerde Windows-authenticatie. De client bewijst zijn identiteit met Kerberos (SPNEGO) of valt op Windows terug op NTLM, zodat gebruikers die al bij een domein zijn aangemeld verbinding maken zonder een wachtwoord in te typen. Browsers in een intranetzone, curl --negotiate en .NET-clients die standaardreferenties gebruiken kunnen de uitdaging allemaal beantwoorden.

Platforms

Eigenschappen en gebeurtenis

Voorbeeld

De volgende server accepteert slechts twee principals. De gebeurtenis beperkt de toegang op basis van de naam van de principal.


uses
  sgcWebSocket, sgcWebSocket_Classes;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    oServer: TsgcWebSocketHTTPServer;
    procedure OnNegotiateAuthenticationEvent(Connection: TsgcWSConnection;
      const aPrincipal: String; var Authenticated: Boolean);
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  oServer := TsgcWebSocketHTTPServer.Create(Self);
  oServer.Port := 8080;
  oServer.Authentication.Enabled := True;
  oServer.Authentication.Negotiate.Enabled := True;
  oServer.Authentication.Negotiate.ServicePrincipal :=
    'HTTP/host.example.com@EXAMPLE.COM';
  oServer.OnNegotiateAuthentication := OnNegotiateAuthenticationEvent;
  oServer.Active := True;
end;

procedure TForm1.OnNegotiateAuthenticationEvent(Connection: TsgcWSConnection;
  const aPrincipal: String; var Authenticated: Boolean);
begin
  Authenticated := SameText(aPrincipal, 'EXAMPLE\alice') or
    SameText(aPrincipal, 'EXAMPLE\bob');
end;

Stel op Linux Authentication.Negotiate.Keytab in op het pad van de keytab, bijvoorbeeld /etc/sgc/http.keytab, en gebruik in de gebeurtenis een Kerberos-principal zoals alice@EXAMPLE.COM.

Hoe de uitwisseling werkt

Testen met curl

curl --negotiate -u : http://host.example.com:8080/

Installatienotities