HttpListener.AuthenticationSchemeSelectorDelegate Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví delegát volaný k určení protokolu použitého k ověření klientů.
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
Hodnota vlastnosti
Delegát AuthenticationSchemeSelector , který vyvolá metodu použitou k výběru ověřovacího protokolu. Výchozí hodnota je null
.
Výjimky
Tento objekt byl uzavřen.
Příklady
Následující příklad kódu nastaví hodnotu této vlastnosti.
// 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()
Následující příklad kódu poskytuje implementaci metody vyvolané delegátem 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
Poznámky
Poznámka
Pokud chcete použít stejný ověřovací protokol pro všechny požadavky zpracovávané konkrétní instancí nástroje HttpListener, nemusíte tuto vlastnost nastavovat. Pokud chcete zadat protokol, který se má použít pro všechny požadavky klientů, použijte AuthenticationSchemes vlastnost .
Pokud klient nezadá ověřovací informace ve svých hlavičkách, HttpListener zavolá zadaného delegáta pro každý neověřený příchozí požadavek, aby určil, který protokol se má použít k ověření klienta. Metody GetContext a EndGetContext vrátí příchozí požadavek pouze v případě, že HttpListener požadavek úspěšně ověřil. Pokud požadavek nelze ověřit, HttpListener automaticky odešle zpět odpověď 401. Identitu úspěšně ověřeného klienta můžete získat pomocí HttpRequest.LogonUserIdentity vlastnosti .
Možnost delegovat výběr ověřovacího protokolu na metodu specifickou pro aplikaci je užitečná, pokud chcete, aby instance HttpListener používala různé ověřovací protokoly v závislosti na vlastnostech požadavků, které přijímá (například požadavek Url nebo UserHostAddress vlastnost).
Poznámka
Chcete-li nastavit tuto vlastnost pro povolení funkce Digest, protokol NTLM nebo Negotiate vyžaduje , SecurityPermission. ControlPrincipal