HttpListener.AuthenticationSchemeSelectorDelegate HttpListener.AuthenticationSchemeSelectorDelegate HttpListener.AuthenticationSchemeSelectorDelegate HttpListener.AuthenticationSchemeSelectorDelegate Property

Definizione

Ottiene o imposta il delegato chiamato per determinare il protocollo utilizzato per autenticare i client.Gets or sets the delegate called to determine the protocol used to authenticate clients.

public:
 property System::Net::AuthenticationSchemeSelector ^ AuthenticationSchemeSelectorDelegate { System::Net::AuthenticationSchemeSelector ^ get(); void set(System::Net::AuthenticationSchemeSelector ^ value); };
public System.Net.AuthenticationSchemeSelector AuthenticationSchemeSelectorDelegate { get; set; }
member this.AuthenticationSchemeSelectorDelegate : System.Net.AuthenticationSchemeSelector with get, set
Public Property AuthenticationSchemeSelectorDelegate As AuthenticationSchemeSelector

Valore della proprietà

Delegato AuthenticationSchemeSelector che richiama il metodo utilizzato per selezionare un protocollo di autenticazione.An AuthenticationSchemeSelector delegate that invokes the method used to select an authentication protocol. Il valore predefinito è null.The default value is null.

Eccezioni

Esempi

Nell'esempio di codice seguente viene impostato il valore di questa proprietà.The following code example sets the value of this property.

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

Nell'esempio di codice seguente viene fornita un'implementazione di un metodo richiamato da un AuthenticationSchemeSelector delegato.The following code example provides an implementation of a method invoked by an AuthenticationSchemeSelector delegate.

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

Commenti

Nota

Se si desidera utilizzare lo stesso protocollo di autenticazione per tutte le richieste gestite da una particolare istanza di HttpListener, non è necessario impostare questa proprietà.If you want the same authentication protocol to be used for all requests handled by a particular instance of HttpListener, you do not need to set this property. Per specificare un protocollo da usare per tutte le richieste client, usare la AuthenticationSchemes proprietà.To specify a protocol to be used for all client requests, use the AuthenticationSchemes property.

Se il client non ha specificato le informazioni di autenticazione nelle relative intestazioni HttpListener , chiama il delegato specificato per ogni richiesta in ingresso non autenticato per determinare il protocollo da usare per l'autenticazione del client.If the client has not specified authentication information in its headers, the HttpListener calls the specified delegate for each unauthenticated incoming request to determine which, if any, protocol to use to authenticate the client. I GetContext metodi EndGetContext e restituiscono una richiesta in ingresso solo se HttpListener la richiesta è stata autenticata correttamente.The GetContext and EndGetContext methods return an incoming request only if the HttpListener successfully authenticated the request. Se non è possibile autenticare una richiesta, HttpListener il restituisce automaticamente una risposta 401.If a request cannot be authenticated, the HttpListener automatically sends back a 401 response. È possibile ottenere l'identità di un client autenticato con successo usando HttpRequest.LogonUserIdentity la proprietà.You can get the identity of a successfully authenticated client using the HttpRequest.LogonUserIdentity property.

La possibilità di delegare la scelta del protocollo di autenticazione a un metodo specifico dell'applicazione è utile se si desidera HttpListener che un'istanza di usi protocolli di autenticazione diversi a seconda delle caratteristiche delle richieste ricevute (per esempio, la proprietà Url o UserHostAddress della richiesta).The ability to delegate the choice of authentication protocol to an application-specific method is useful if you want an instance of HttpListener to use different authentication protocols depending on the characteristics of the requests it receives (for example, the request's Url or UserHostAddress property).

Nota

Per impostare questa proprietà per abilitare digest, NTLM o Negotiate SecurityPermission, è necessario disporre di,. ControlPrincipalTo set this property to enable Digest, NTLM, or Negotiate requires the SecurityPermission, ControlPrincipal.

Si applica a