Comparteix a través de


HttpListener.AuthenticationSchemeSelectorDelegate Propiedad

Definición

Obtiene o establece el delegado al que se llama para determinar el protocolo utilizado para autenticar los clientes.

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

Valor de propiedad

Un delegado AuthenticationSchemeSelector que invoca el método utilizado para seleccionar un protocolo de autenticación. El valor predeterminado es null.

Excepciones

Este objeto se ha cerrado.

Ejemplos

En el ejemplo de código siguiente se establece el valor de esta propiedad.

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

En el ejemplo de código siguiente se proporciona una implementación de un método invocado por un AuthenticationSchemeSelector delegado.

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

Comentarios

Nota

Si desea que se use el mismo protocolo de autenticación para todas las solicitudes controladas por una instancia determinada de HttpListener, no es necesario establecer esta propiedad. Para especificar un protocolo que se usará para todas las solicitudes de cliente, use la AuthenticationSchemes propiedad .

Si el cliente no ha especificado información de autenticación en sus encabezados, HttpListener llama al delegado especificado para cada solicitud entrante no autenticada para determinar qué protocolo usar para autenticar al cliente. Los GetContext métodos y EndGetContext devuelven una solicitud entrante solo si la HttpListener solicitud se ha autenticado correctamente. Si no se puede autenticar una solicitud, devuelve HttpListener automáticamente una respuesta 401. Puede obtener la identidad de un cliente autenticado correctamente mediante la HttpRequest.LogonUserIdentity propiedad .

La capacidad de delegar la elección del protocolo de autenticación a un método específico de la aplicación es útil si desea que una instancia de HttpListener use protocolos de autenticación diferentes en función de las características de las solicitudes que recibe (por ejemplo, la propiedad o UserHostAddress la solicitudUrl).

Nota

Para establecer esta propiedad para habilitar Digest, NTLM o Negotiate, se requiere SecurityPermission, ControlPrincipal.

Se aplica a