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é

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 un instance particulier de HttpListener, vous n’avez pas besoin de définir cette propriété. Pour spécifier un protocole à utiliser pour toutes les requêtes clientes, utilisez la AuthenticationSchemes propriété .

Si le client n’a pas spécifié d’informations d’authentification dans ses en-têtes, le HttpListener appelle le délégué spécifié pour chaque demande entrante non authentifiée afin de déterminer quel protocole, le cas échéant, utiliser pour authentifier le client. Les GetContext méthodes et EndGetContext retournent une requête entrante uniquement si le HttpListener a correctement authentifié la demande. Si une demande ne peut pas être authentifiée, le HttpListener renvoie automatiquement une réponse 401. Vous pouvez obtenir l’identité d’un client authentifié à 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’un instance d’utiliser HttpListener différents protocoles d’authentification en fonction des caractéristiques des demandes qu’il reçoit (par exemple, la propriété ou UserHostAddress la Url requête).

Notes

Pour définir cette propriété afin d’activer Digest, NTLM ou Negotiate, vous devez .SecurityPermissionControlPrincipal

S’applique à