HttpListener.AuthenticationSchemeSelectorDelegate Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.