Partager via


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 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 du client, 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 le 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, renvoie HttpListener automatiquement une réponse 401. Vous pouvez obtenir l’identité d’un client correctement 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’une instance de HttpListener utilise différents protocoles d’authentification en fonction des caractéristiques des demandes qu’elle 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 à