HttpListener.AuthenticationSchemeSelectorDelegate Właściwość

Definicja

Pobiera lub ustawia delegata wywoływanego w celu określenia protokołu używanego do uwierzytelniania klientów.

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

Wartość właściwości

Delegat AuthenticationSchemeSelector , który wywołuje metodę używaną do wybierania protokołu uwierzytelniania. Wartość domyślna to null.

Wyjątki

Ten obiekt został zamknięty.

Przykłady

Poniższy przykład kodu ustawia wartość tej właściwości.

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

Poniższy przykład kodu zawiera implementację metody wywoływanej przez delegata AuthenticationSchemeSelector .

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

Uwagi

Uwaga

Jeśli chcesz, aby ten sam protokół uwierzytelniania był używany dla wszystkich żądań obsługiwanych przez określone wystąpienie programu HttpListener, nie musisz ustawiać tej właściwości. Aby określić protokół, który ma być używany dla wszystkich żądań klientów, użyj AuthenticationSchemes właściwości .

Jeśli klient nie określił informacji uwierzytelniania w swoich nagłówkach, HttpListener wywołuje określony delegat dla każdego nieuwierzytelnionego żądania przychodzącego, aby określić, który, jeśli istnieje, protokół używany do uwierzytelniania klienta. Metody GetContext i EndGetContext zwracają żądanie przychodzące tylko wtedy, gdy HttpListener żądanie zostanie pomyślnie uwierzytelnione. Jeśli nie można uwierzytelnić żądania, element HttpListener automatycznie wysyła odpowiedź 401. Tożsamość pomyślnie uwierzytelnionego klienta można uzyskać przy użyciu HttpRequest.LogonUserIdentity właściwości .

Możliwość delegowania wybranego protokołu uwierzytelniania do metody specyficznej dla aplikacji jest przydatna, jeśli chcesz, aby wystąpienie HttpListener używało różnych protokołów uwierzytelniania w zależności od właściwości odbieranych żądań (na przykład żądań Url lub UserHostAddress właściwości).

Uwaga

Aby ustawić tę właściwość tak, aby włączyć funkcję Digest, NTLM lub Negotiate, wymaga elementu SecurityPermission, ControlPrincipal.

Dotyczy