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

AuthenticationSchemeSelector

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()

Im folgenden Codebeispiel wird eine Implementierung einer Methode bereitgestellt, die von einem AuthenticationSchemeSelector Stellvertretung 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 das gleiche Authentifizierungsprotokoll für alle Anforderungen verwenden möchten, die von einer bestimmten Instanz behandelt HttpListenerwerden, müssen Sie diese Eigenschaft nicht festlegen. Um ein Protokoll anzugeben, das für alle Clientanforderungen verwendet werden soll, verwenden Sie die AuthenticationSchemes Eigenschaft.

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

Die Möglichkeit, das Authentifizierungsprotokoll an eine anwendungsspezifische Methode zu delegieren, ist nützlich, wenn Sie eine Instanz HttpListener von verschiedenen Authentifizierungsprotokollen verwenden möchten, abhängig von den Merkmalen der von ihnen empfangenen Anforderungen (z. B. die Anforderung Url oder UserHostAddress Eigenschaft).

Hinweis

Um diese Eigenschaft so festzulegen, dass Digest, NTLM oder Negotiate aktiviert werden soll, ist dies ControlPrincipalerforderlichSecurityPermission.

Gilt für