HttpListener.AuthenticationSchemeSelectorDelegate Eigenschaft

Definition

Ruft den Delegaten ab, der zum Bestimmen des für die Authentifizierung von Clients verwendeten Protokolls aufgerufen wird, oder legt diesen fest.

public:
 property System::Net::AuthenticationSchemeSelector ^ AuthenticationSchemeSelectorDelegate { System::Net::AuthenticationSchemeSelector ^ get(); void set(System::Net::AuthenticationSchemeSelector ^ value); };
public System.Net.AuthenticationSchemeSelector? AuthenticationSchemeSelectorDelegate { get; set; }
public System.Net.AuthenticationSchemeSelector AuthenticationSchemeSelectorDelegate { get; set; }
member this.AuthenticationSchemeSelectorDelegate : System.Net.AuthenticationSchemeSelector with get, set
Public Property AuthenticationSchemeSelectorDelegate As AuthenticationSchemeSelector

Eigenschaftswert

Ein AuthenticationSchemeSelector-Delegat, der die zum Auswählen eines Authentifizierungsprotokolls verwendete Methode aufruft. Der Standardwert ist null.

Ausnahmen

Dieses Objekt wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird der Wert dieser Eigenschaft festgelegt.

// Set up a listener.
HttpListener listener = new HttpListener();
HttpListenerPrefixCollection prefixes = listener.Prefixes;
prefixes.Add(@"http://localhost:8080/");
prefixes.Add(@"http://contoso.com:8080/");

// Specify the authentication delegate.
listener.AuthenticationSchemeSelectorDelegate =
    new AuthenticationSchemeSelector (AuthenticationSchemeForClient);

// Start listening for requests and process them
// synchronously.
listener.Start();
' Set up a listener.
Dim listener As New HttpListener()
Dim prefixes As HttpListenerPrefixCollection = listener.Prefixes
prefixes.Add("http://localhost:8080/")
prefixes.Add("http://contoso.com:8080/")

' Specify the authentication delegate.
listener.AuthenticationSchemeSelectorDelegate = New AuthenticationSchemeSelector(AddressOf AuthenticationSchemeForClient)

' Start listening for requests and process them 
' synchronously.
listener.Start()

Das folgende Codebeispiel stellt eine Implementierung einer Methode bereit, die von einem AuthenticationSchemeSelector Delegaten aufgerufen wird.

static AuthenticationSchemes AuthenticationSchemeForClient(HttpListenerRequest request)
{
    Console.WriteLine("Client authentication protocol selection in progress...");
    // Do not authenticate local machine requests.
    if (request.RemoteEndPoint.Address.Equals (IPAddress.Loopback))
    {
        return AuthenticationSchemes.None;
    }
    else
    {
        return AuthenticationSchemes.IntegratedWindowsAuthentication;
    }
}
Private Shared Function AuthenticationSchemeForClient(ByVal request As HttpListenerRequest) As AuthenticationSchemes
    Console.WriteLine("Client authentication protocol selection in progress...")
    ' Do not authenticate local machine requests.
    If request.RemoteEndPoint.Address.Equals(IPAddress.Loopback) Then
        Return AuthenticationSchemes.None
    Else
        Return AuthenticationSchemes.IntegratedWindowsAuthentication
    End If
End Function

Hinweise

Hinweis

Wenn Sie dasselbe Authentifizierungsprotokoll für alle Anforderungen verwenden möchten, die von einem bestimmten instance von HttpListenerverarbeitet werden, müssen Sie diese Eigenschaft nicht festlegen. Verwenden Sie die -Eigenschaft, um ein Protokoll anzugeben, das AuthenticationSchemes für alle Clientanforderungen verwendet werden soll.

Wenn der Client keine Authentifizierungsinformationen in seinen Headern angegeben hat, ruft der HttpListener den angegebenen Delegat für jede nicht authentifizierte eingehende Anforderung auf, um zu bestimmen, welches Protokoll zur Authentifizierung des Clients verwendet werden soll, falls vorhanden. Die GetContext Methoden und EndGetContext geben eine eingehende Anforderung nur zurück, wenn die HttpListener Anforderung erfolgreich authentifiziert wurde. Wenn eine Anforderung nicht authentifiziert werden kann, sendet die HttpListener automatisch eine 401-Antwort zurück. Sie können die Identität eines erfolgreich authentifizierten Clients mithilfe der HttpRequest.LogonUserIdentity -Eigenschaft abrufen.

Die Möglichkeit, die Auswahl des Authentifizierungsprotokolls an eine anwendungsspezifische Methode zu delegieren, ist nützlich, wenn ein instance von HttpListener je nach den Merkmalen der empfangenen Anforderungen verschiedene Authentifizierungsprotokolle Url verwenden soll (z. B. die Eigenschaft oder UserHostAddress eigenschaft der Anforderung).

Hinweis

Um diese Eigenschaft festzulegen, um Digest, NTLM oder Negotiate zu aktivieren, erfordert , ControlPrincipal.SecurityPermission

Gilt für: