HttpListener.AuthenticationSchemeSelectorDelegate Propriété

Définition

Obtient ou définit le délégué appelé pour déterminer le protocole utilisé pendant l'authentification des clients.

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

Valeur de propriété

AuthenticationSchemeSelector

Délégué AuthenticationSchemeSelector qui appelle la méthode utilisée pour sélectionner un protocole d'authentification. La valeur par défaut est null.

Exceptions

L’objet a été fermé.

Exemples

L’exemple de code suivant définit la valeur de cette propriété.

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

L’exemple de code suivant fournit une implémentation d’une méthode appelée par un AuthenticationSchemeSelector délégué.

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

Remarques

Notes

Si vous souhaitez que le même protocole d’authentification soit utilisé pour toutes les demandes gérées par une instance particulière de HttpListener, vous n’avez pas besoin de définir cette propriété. Pour spécifier un protocole à utiliser pour toutes les demandes clientes, utilisez la AuthenticationSchemes propriété.

Si le client n’a pas spécifié d’informations d’authentification dans ses en-têtes, il HttpListener appelle le délégué spécifié pour chaque requête entrante non authentifiée pour déterminer quel protocole utiliser pour authentifier le client. Les GetContext méthodes et EndGetContext les méthodes retournent une requête entrante uniquement si la HttpListener requête a été authentifiée avec succès. Si une demande ne peut pas être authentifiée, elle HttpListener renvoie automatiquement une réponse 401. Vous pouvez obtenir l’identité d’un client authentifié avec succès à l’aide de la HttpRequest.LogonUserIdentity propriété.

La possibilité de déléguer le choix du protocole d’authentification à une méthode spécifique à l’application est utile si vous souhaitez qu’une instance d’utiliser HttpListener différents protocoles d’authentification en fonction des caractéristiques des demandes reçues (par exemple, la requête Url ou UserHostAddress la propriété).

Notes

Pour définir cette propriété pour activer Digest, NTLM ou Negotiate nécessite le SecurityPermission. ControlPrincipal

S’applique à