HttpListener.AuthenticationSchemeSelectorDelegate Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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.