Freigeben über


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 dasselbe Authentifizierungsprotokoll für alle Anforderungen verwendet werden soll, die von einer bestimmten Instanz 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 Delegaten für jede nicht authentifizierte eingehende Anforderung auf, um zu bestimmen, welches Protokoll ggf. zum Authentifizieren des Clients verwendet werden soll. Die GetContext Methoden und EndGetContext geben nur dann eine eingehende Anforderung zurück, wenn die HttpListener anforderung erfolgreich authentifiziert wurde. Wenn eine Anforderung nicht authentifiziert werden kann, sendet automatisch HttpListener 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 eine Instanz von HttpListener unterschiedliche Authentifizierungsprotokolle Url verwenden soll, je nach den Merkmalen der empfangenen Anforderungen (z. B. der -Eigenschaft oder UserHostAddress -Eigenschaft der Anforderung).

Hinweis

Um diese Eigenschaft so festzulegen, dass Digest, NTLM oder Negotiate aktiviert wird, ist , SecurityPermissionControlPrincipalerforderlich.

Gilt für: