Integrated Windows Authentication with Extended Protection (en anglais)Integrated Windows Authentication with Extended Protection

Certaines améliorations apportées changent la manière dont l’authentification Windows intégrée est gérée par les classes HttpWebRequest, HttpListener, SmtpClient, SslStream, NegotiateStream et les classes associées dans l’espace de noms System.Net et les espaces de noms associés.Enhancements were made that affect how integrated Windows authentication is handled by the HttpWebRequest, HttpListener, SmtpClient, SslStream, NegotiateStream, and related classes in the System.Net and related namespaces. La prise en charge de la protection étendue a été ajoutée pour renforcer la sécurité.Support was added for extended protection to enhance security.

Ces modifications peuvent affecter les applications qui utilisent ces classes pour effectuer des demandes web et recevoir des réponses quand l’authentification Windows intégrée est utilisée.These changes can affect applications that use these classes to make web requests and receive responses where integrated Windows authentication is used. Elles peuvent aussi avoir un impact sur les serveurs web et les applications clientes configurés pour utiliser l’authentification Windows intégrée.This change can also impact web servers and client applications that are configured to use integrated Windows authentication.

Ces modifications peuvent affecter les applications qui utilisent ces classes pour effectuer d’autres types de demandes et recevoir des réponses quand l’authentification Windows intégrée est utilisée.These changes can also affect applications that use these classes to make other types of requests and receive responses where integrated Windows authentication is used.

Les modifications pour la prise en charge de la protection étendue concernent uniquement les applications s’exécutant sur Windows 7 et Windows Server 2008 R2.The changes to support extended protection are available only for applications on Windows 7 and Windows Server 2008 R2. Les fonctionnalités de protection étendue ne sont pas disponibles dans les versions antérieures de Windows.The extended protection features are not available on earlier versions of Windows.

OverviewOverview

La conception de l’authentification Windows intégrée permet à certaines réponses aux demandes d’informations d’identification d’être universelles, ce qui signifie qu’elles peuvent être réutilisées ou transférées.The design of integrated Windows authentication allows for some credential challenge responses to be universal, meaning they can be re-used or forwarded. Les réponses aux demandes doivent être construites au minimum avec des informations spécifiques à la cible et, de préférence, avec également des informations spécifiques au canal.The challenge responses should be constructed at a minimum with target specific information and preferably also with some channel specific information. Les services peuvent alors fournir une protection étendue pour garantir que les réponses aux demandes d’informations d’identification contiennent des informations propres aux services, telles qu’un nom de principal du service (SPN).Services can then provide extended protection to ensure that credential challenge responses contain service specific information such as a Service Principal Name (SPN). Grâce à la présence de ces informations dans les échanges d’informations d’identification, les services assurent une meilleure protection contre l’utilisation malveillante de certaines réponses aux demandes d’informations d’identification qui ont été utilisées de manière incorrecte.With this information in the credential exchanges, services are able to better protect against malicious use of credential challenge responses that might have been improperly used.

La conception de la protection étendue est une amélioration apportée aux protocoles d’authentification qui vise à atténuer les risques d’attaques par relais d’authentification.The extended protection design is an enhancement to authentication protocols designed to mitigate authentication relay attacks. Elle repose sur le concept d’informations de liaison de service et de canal.It revolves around the concept of channel and service binding information.

Les objectifs généraux sont les suivants :The overall objectives are the following:

  1. Si le client est mis à jour pour prendre en charge la protection étendue, les applications doivent fournir des informations de liaison de service et de canal à tous les protocoles d’authentification pris en charge.If the client is updated to support the extended protection, applications should supply a channel binding and service binding information to all supported authentication protocols. Les informations de liaison de canal peuvent uniquement être fournies s’il y a un canal TLS auquel effectuer la liaison.Channel binding information can only be supplied when there is a channel (TLS) to bind to. Les informations de liaison de service doivent toujours être fournies.Service binding information should always be supplied.

  2. S’ils sont configurés de manière appropriée, les serveurs mis à jour vérifient les informations de liaison de service et de canal contenues dans le jeton d’authentification client et rejettent la tentative d’authentification si les liaisons de canal ne correspondent pas.Updated servers which are properly configured may verify the channel and service binding information when it is present in the client authentication token and reject the authentication attempt if the channel bindings do not match. Selon le scénario de déploiement, les serveurs vérifient la liaison de canal ou la liaison de service, ou les deux liaisons.Depending on the deployment scenario, servers may verify channel binding, service binding or both.

  3. Les serveurs mis à jour ont la possibilité d’accepter ou de rejeter les demandes de client de bas niveau qui ne contiennent pas les informations de liaison de canal basées sur la stratégie.Updated servers have the ability to accept or reject down-level client requests that do not contain the channel binding information based on policy.

Les informations utilisées par la protection étendue sont constituées d’au moins un des deux éléments suivants :Information used by extended protection consists of one or both of the following two parts:

  1. Un jeton de liaison de canal.A Channel Binding Token or CBT.

  2. Des informations de liaison de service sous la forme d’un nom de principal du service (SPN).Service Binding information in the form of a Service Principal Name or SPN.

Les informations de liaison de service sont une indication de l’intention d’un client de s’authentifier auprès d’un point de terminaison de service particulier.Service Binding information is an indication of a client’s intent to authenticate to a particular service endpoint. Elles sont transmises du client au serveur avec les propriétés suivantes :It is communicated from client to server with the following properties:

  • La valeur du SPN doit être fournie au serveur d’authentification client au format texte en clair.The SPN value must be available to the server performing client authentication in clear text form.

  • La valeur du SPN est publique.The value of the SPN is public.

  • Le SPN doit être protégé par chiffrement pendant son transfert pour empêcher l’insertion, la suppression ou la modification de sa valeur par une attaque de l’intercepteur.The SPN must be cryptographically protected in transit such that a man-in-the-middle attack cannot insert, remove or modify its value.

Un jeton de liaison de canal est une propriété du canal sécurisé externe (par exemple, TLS) qui permet de lier ce canal à une conversation sur un canal interne authentifié par le client.A CBT is a property of the outer secure channel (such as TLS) used to tie (bind) it to a conversation over an inner, client-authenticated channel. Le jeton de liaison de canal doit avoir les propriétés suivantes (qui sont également définies dans la norme RFC 5056 publiée par l’IETF) :The CBT must have the following properties (also defined by IETF RFC 5056):

  • Quand un canal externe existe, la valeur du jeton de liaison de canal doit être une propriété qui identifie le canal externe ou le point de terminaison de serveur, arrivés indépendamment côté client et côté serveur d’une conversation.When an outer channel exists, the value of the CBT must be a property identifying either the outer channel or the server endpoint, independently arrived at by both client and server sides of a conversation.

  • La valeur du jeton de liaison de canal envoyé par le client ne doit pas être une valeur falsifiable par un attaquant.Value of the CBT sent by the client must not be something an attacker can influence.

  • La confidentialité de la valeur du jeton de liaison de canal n’est pas garantie.No guarantees are made about secrecy of the CBT value. Toutefois, cela ne signifie pas que la valeur de la liaison de service ou que les informations de liaison de canal seront toujours exposées à d’autres parties que le serveur effectuant l’authentification, car elles sont parfois chiffrées par le protocole de transport du jeton de liaison de canal.This does not however mean that the value of the service binding as well as channel binding information can always be examined by any other but the server performing authentication, as the protocol carrying the CBT may be encrypting it.

  • L’intégrité du jeton de liaison de canal doit être protégée par chiffrement pendant le transfert du jeton pour empêcher l’insertion, la suppression ou la modification de sa valeur par un attaquant.The CBT must be cryptographically integrity protected in transit such that an attacker cannot insert, remove or modify its value.

La liaison de canal s’effectue par le client qui transfère le SPN et le jeton de liaison de canal au serveur de manière infalsifiable.Channel binding is accomplished by the client transferring the SPN and the CBT to the server in a tamperproof fashion. Le serveur valide les informations de liaison de canal conformément à sa stratégie et rejette les tentatives d’authentification pour lesquelles il ne pense pas être la cible prévue.The server validates the channel binding information in accordance with its policy and rejects authentication attempts for which it does not believe itself to have been the intended target. Les deux canaux sont ainsi liés par chiffrement.This way, the two channels become cryptographically bound together.

Pour garantir la compatibilité avec les clients et applications existants, un serveur peut être configuré pour autoriser les tentatives d’authentification effectuées par des clients qui ne prennent pas encore en charge la protection étendue.To preserve compatibility with existing clients and applications, a server may be configured to allow authentication attempts by clients that do not yet support extended protection. Cette configuration est « partiellement sécurisée », au lieu d’être « entièrement sécurisée ».This is referred to as a "partially hardened" configuration, in contrast to a "fully hardened" configuration.

Plusieurs composants des espaces de noms System.Net et System.Net.Security effectuent l’authentification Windows intégrée pour le compte d’une application appelante.Multiple components in the System.Net and System.Net.Security namespaces perform integrated Windows authentication on behalf of a calling application. Cette section décrit les modifications apportées aux composants System.Net pour ajouter une protection étendue lors de l’utilisation de l’authentification Windows intégrée.This section describes changes to System.Net components to add extended protection in their use of integrated Windows authentication.

La protection étendue est prise en charge sur Windows 7.Extended protection is currently supported on Windows 7. Un mécanisme intégré permet à une application de déterminer si le système d’exploitation prend en charge la protection étendue.A mechanism is provided so an application can determine if the operating system supports extended protection.

Modifications pour prendre en charge la protection étendueChanges to Support Extended Protection

Selon le protocole d’authentification choisi, le processus d’authentification utilisé avec l’authentification Windows intégrée inclut souvent une réponse émise par l’ordinateur de destination et renvoyée à l’ordinateur client.The authentication process used with integrated Windows authentication, depending on the authentication protocol used, often includes a challenge issued by the destination computer and sent back to the client computer. La protection étendue ajoute de nouvelles fonctionnalités à ce processus d’authentification.Extended protection adds new features to this authentication process

L’espace de noms System.Security.Authentication.ExtendedProtection fournit la prise en charge de l’authentification avec protection étendue pour les applications.The System.Security.Authentication.ExtendedProtection namespace provides support for authentication using extended protection for applications. Dans cet espace de noms, la classe ChannelBinding représente une liaison de canal.The ChannelBinding class in this namespace represents a channel binding. Dans cet espace de noms, la classe ExtendedProtectionPolicy représente la stratégie de protection étendue utilisée par le serveur pour valider les connexions client entrantes.The ExtendedProtectionPolicy class in this namespace represents the extended protection policy used by the server to validate incoming client connections. D’autres membres de classe sont utilisés avec la protection étendue.Other class members are used with extended protection.

Pour les applications serveur, ces classes comportent les éléments suivants :For server applications, these classes include the following:

Une classe ExtendedProtectionPolicy qui a les éléments suivants :A ExtendedProtectionPolicy that has the following elements:

  • Une propriété OSSupportsExtendedProtection qui indique si le système d’exploitation prend en charge l’authentification Windows intégrée avec protection étendue.An OSSupportsExtendedProtection property that indicates whether the operating system supports integrated windows authentication with extended protection.

  • Une valeur PolicyEnforcement qui indique quand la stratégie de protection étendue doit être appliquée.A PolicyEnforcement value that indicates when the extended protection policy should be enforced.

  • Une valeur ProtectionScenario qui spécifie le scénario de déploiement.A ProtectionScenario value that indicates the deployment scenario. Cette valeur détermine la façon dont la protection étendue est vérifiée.This influences how extended protection is checked.

  • Un élément ServiceNameCollection facultatif qui contient la liste des noms de principal de service personnalisés auxquels est comparé le nom de principal du service fourni par le client comme cible de l’authentification.An optional ServiceNameCollection that contains the custom SPN list that is used to match against the SPN provided by the client as the intended target of the authentication.

  • Un élément ChannelBinding facultatif qui contient une liaison de canal personnalisée à utiliser pour la validation.An optional ChannelBinding that contains a custom channel binding to use for validation. Ce scénario n’est pas courant.This scenario is not a common case

L’espace de noms System.Security.Authentication.ExtendedProtection.Configuration fournit la prise en charge de la configuration de l’authentification avec protection étendue pour les applications.The System.Security.Authentication.ExtendedProtection.Configuration namespace provides support for configuration of authentication using extended protection for applications.

Plusieurs modifications ont été apportées aux fonctionnalités pour permettre la prise en charge de la protection étendue dans l’espace de noms System.Net existant.A number of feature changes were made to support extended protection in the existing System.Net namespace. Ces modifications sont les suivantes :These changes include the following:

Pour prendre en charge la protection étendue dans les applications clientes SMTP, une fonctionnalité a été modifiée dans l’espace de noms System.Net.Mail :A feature change was made to support extended protection for SMTP client applications in the existing System.Net.Mail namespace:

  • Une propriété TargetName dans la classe SmtpClient qui représente le nom de principal du service à utiliser lors de l’authentification avec protection étendue dans les applications clientes SMTP.A TargetName property in the SmtpClient class that represents the SPN to use for authentication when using extended protection for SMTP client applications.

Plusieurs modifications ont été apportées aux fonctionnalités pour permettre la prise en charge de la protection étendue dans l’espace de noms System.Net.Security existant.A number of feature changes were made to support extended protection in the existing System.Net.Security namespace. Ces modifications sont les suivantes :These changes include the following:

Une nouvelle propriété SmtpNetworkElement a été ajoutée dans l’espace de noms System.Net.Security pour prendre en charge la configuration de la protection étendue pour les clients SMTP.A SmtpNetworkElement property was added to support configuration of extended protection for SMTP clients in the System.Net.Security namespace.

Protection étendue pour les applications clientesExtended Protection for Client Applications

La prise en charge de la protection étendue est automatique pour la plupart des applications clientes.Extended protection support for most client applications happens automatically. Les classes HttpWebRequest et SmtpClient prennent en charge la protection étendue quand la version sous-jacente de Windows la prend en charge.The HttpWebRequest and SmtpClient classes support extended protection whenever the underlying version of Windows supports extended protection. Une instance HttpWebRequest envoie un nom de principal du service construit à partir de l’Uri.An HttpWebRequest instance sends an SPN constructed from the Uri. Par défaut, une instance SmtpClient envoie un nom de principal du service construit à partir du nom d’hôte du serveur de messagerie SMTP.By default, an SmtpClient instance sends an SPN constructed from the host name of the SMTP mail server.

Pour l’authentification personnalisée, les applications clientes peuvent utiliser les méthodes HttpWebRequest.EndGetRequestStream(IAsyncResult, TransportContext) ou HttpWebRequest.GetRequestStream(TransportContext) de la classe HttpWebRequest qui permettent de récupérer le TransportContext et le jeton de liaison de canal à l’aide de la méthode GetChannelBinding.For custom authentication, client applications can use the HttpWebRequest.EndGetRequestStream(IAsyncResult, TransportContext) or HttpWebRequest.GetRequestStream(TransportContext) methods in the HttpWebRequest class that allow retrieving the TransportContext and the CBT using the GetChannelBinding method.

Le nom de principal du service à utiliser pour l’authentification Windows intégrée et envoyé par une instance HttpWebRequest à un service donné peut être substitué en définissant la propriété CustomTargetNameDictionary.The SPN to use for integrated Windows authentication sent by an HttpWebRequest instance to a given service can be overridden by setting the CustomTargetNameDictionary property.

La propriété TargetName permet de définir un nom principal de service personnalisé à utiliser pour l’authentification Windows intégrée de la connexion SMTP.The TargetName property can be used to set a custom SPN to use for integrated Windows authentication for the SMTP connection.

Protection étendue pour les applications serveurExtended Protection for Server Applications

HttpListener fournit automatiquement des mécanismes de validation des liaisons de service pendant l’authentification HTTP.HttpListener automatically provides mechanisms for validating service bindings when performing HTTP authentication.

Le scénario le plus sécurisé consiste à activer la protection étendue pour les préfixes HTTPS://.The most secure scenario is to enable extended protection for HTTPS:// prefixes. Dans ce cas, définissez HttpListener.ExtendedProtectionPolicy à ExtendedProtectionPolicy, où PolicyEnforcement a la valeur WhenSupported ou Always et où ProtectionScenario a la valeur TransportSelected. La valeur WhenSupported met HttpListener en mode partiellement sécurisé, tandis que Always correspond au mode entièrement sécurisé.In this case, set HttpListener.ExtendedProtectionPolicy to an ExtendedProtectionPolicy with PolicyEnforcement set to WhenSupported or Always, and ProtectionScenario set to TransportSelected A value of WhenSupported puts HttpListener in partially hardened mode, while Always corresponds to fully hardened mode.

Dans cette configuration, quand une demande est envoyée au serveur via un canal sécurisé externe, celui-ci est interrogé pour fournir une liaison de canal.In this configuration when a request is made to the server through an outer secure channel, the outer channel is queried for a channel binding. Cette liaison de canal est passée aux appels d’authentification SSPI, qui vérifient ensuite la correspondance avec la liaison de canal dans l’objet blob d’authentification.This channel binding is passed to the authentication SSPI calls, which validate that the channel binding in the authentication blob matches. Il y a trois cas possibles :There are three possible outcomes:

  1. Le système d’exploitation sous-jacent du serveur ne prend pas en charge la protection étendue.The server’s underlying operating system does not support extended protection. La demande n’est pas exposée à l’application, et une réponse d’autorisation refusée (401) est retournée au client.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Un message est consigné dans la source de la trace HttpListener indiquant la raison de l’échec.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  2. L’appel SSPI échoue. Cela signifie que le client a spécifié une liaison de canal qui ne correspond pas à la valeur attendue récupérée à partir du canal externe, ou que le client n’a pas pu fournir de liaison de canal alors que la stratégie de protection étendue sur le serveur est configurée avec le paramètre Always.The SSPI call fails indicating that either the client specified a channel binding that did not match the expected value retrieved from the outer channel or the client failed to supply a channel binding when the extended protection policy on the server was configured for Always. Dans les deux cas, la demande n’est pas exposée à l’application, et une réponse d’autorisation refusée (401) est retournée au client.In both cases, the request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Un message est consigné dans la source de la trace HttpListener indiquant la raison de l’échec.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  3. Le client spécifie la liaison de canal appropriée ou bien il est autorisé à se connecter sans spécifier de liaison de canal du fait que la stratégie de protection étendue sur le serveur est configurée avec le paramètre WhenSupported. La demande est retournée à l’application pour être traitée.The client specifies the correct channel binding or is allowed to connect without specifying a channel binding since the extended protection policy on the server is configured with WhenSupported The request is returned to the application for processing. Aucune vérification de nom de service n’est effectuée automatiquement.No service name check is performed automatically. Une application peut choisir d’effectuer elle-même la validation des noms de service à l’aide de la propriété ServiceName, mais dans ce cas, cela est inutile.An application may choose to perform its own service name validation using the ServiceName property, but under these circumstances it is redundant.

Si une application effectue elle-même des appels SSPI dans le cadre d’une authentification basée sur les objets blob échangés dans le corps d’une requête HTTP et qu’elle souhaite prendre en charge la liaison de canal, elle doit récupérer la liaison de canal attendue du canal sécurisé externe en utilisant HttpListener pour la passer ensuite à la fonction AcceptSecurityContext Win32.If an application makes its own SSPI calls to perform authentication based on blobs passed back and forth within the body of an HTTP request and wishes to support channel binding, it needs to retrieve the expected channel binding from the outer secure channel using HttpListener in order to pass it to native Win32 AcceptSecurityContext function. Pour cela, utilisez la propriété TransportContext et appelez la méthode GetChannelBinding qui permet de récupérer le jeton de liaison de canal.To do this, use the TransportContext property and call GetChannelBinding method to retrieve the CBT. Seules les liaisons de point de terminaison sont prises en charge.Only endpoint bindings are supported. Si une autre liaison que la liaison Endpoint est spécifiée, une NotSupportedException est levée.If anything other Endpoint is specified, a NotSupportedException will be thrown. Si le système d’exploitation sous-jacent prend en charge la liaison de canal, la méthode GetChannelBinding retourne un ChannelBindingSafeHandle enveloppant (wrap) un pointeur dans une liaison de canal qui permet de passer la fonction AcceptSecurityContext comme membre pvBuffer d’une structure SecBuffer elle-même passée dans le paramètre pInput.If the underlying operating system supports channel binding, the GetChannelBinding method will return a ChannelBindingSafeHandle wrapping a pointer to a channel binding suitable for passing to AcceptSecurityContext function as the pvBuffer member of a SecBuffer structure passed in the pInput parameter. La propriété Size contient la longueur, en octets, de la liaison de canal.The Size property contains the length, in bytes, of the channel binding. Si le système d’exploitation sous-jacent ne prend pas en charge les liaisons de canal, la fonction retourne la valeur null.If the underlying operating system does not support channel bindings, the function will return null.

Un autre scénario possible consiste à activer la protection étendue pour les préfixes HTTP:// quand les proxies ne sont pas utilisés.Another possible scenario is to enable extended protection for HTTP:// prefixes when proxies are not used. Dans ce cas, définissez HttpListener.ExtendedProtectionPolicy à ExtendedProtectionPolicy, où PolicyEnforcement a la valeur WhenSupported ou Always et où ProtectionScenario a la valeur TransportSelected. La valeur WhenSupported met HttpListener en mode partiellement sécurisé, tandis que Always correspond au mode entièrement sécurisé.In this case, set HttpListener.ExtendedProtectionPolicy to an ExtendedProtectionPolicy with PolicyEnforcement set to WhenSupported or Always, and ProtectionScenario set to TransportSelected A value of WhenSupported puts HttpListener in partially hardened mode, while Always corresponds to fully hardened mode.

Une liste par défaut de noms de service autorisés est créée à partir des préfixes qui ont été inscrits avec HttpListener.A default list of allowed service names is created based on the prefixes which have been registered with the HttpListener. Cette liste par défaut peut être examinée à l’aide de la propriété DefaultServiceNames.This default list can be examined through the DefaultServiceNames property. Si cette liste n’est pas complète, une application peut spécifier une collection de noms de service personnalisés dans le constructeur de la classe ExtendedProtectionPolicy. Cette collection est alors utilisée à la place de la liste de noms de service par défaut.If this list is not comprehensive, an application can specify a custom service name collection in the constructor for the ExtendedProtectionPolicy class which will be used instead of the default service name list.

Dans cette configuration, quand une demande est faite au serveur sans canal sécurisé externe, l’authentification s’effectue normalement, sans vérification de la liaison de canal.In this configuration, when a request is made to the server without an outer secure channel authentication proceeds normally without a channel binding check. Si l’authentification réussit, le contexte est interrogé pour retourner le nom de service que le client a fourni et validé par rapport à la liste des noms de service autorisés.If the authentication succeeds, the context is queried for the service name that the client provided and validated against the list of acceptable service names. Il y a quatre cas possibles :There are four possible outcomes:

  1. Le système d’exploitation sous-jacent du serveur ne prend pas en charge la protection étendue.The server’s underlying operating system does not support extended protection. La demande n’est pas exposée à l’application, et une réponse d’autorisation refusée (401) est retournée au client.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Un message est consigné dans la source de la trace HttpListener indiquant la raison de l’échec.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  2. Le système d’exploitation sous-jacent du client ne prend pas en charge la protection étendue.The client’s underlying operating system does not support extended protection. Dans la configuration WhenSupported, la tentative d’authentification réussit et la demande est retournée à l’application.In the WhenSupported configuration, the authentication attempt will succeed and the request will be returned to the application. Dans la configuration Always, la tentative d’authentification échoue.In the Always configuration, the authentication attempt will fail. La demande n’est pas exposée à l’application, et une réponse d’autorisation refusée (401) est retournée au client.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Un message est consigné dans la source de la trace HttpListener indiquant la raison de l’échec.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  3. Le système d’exploitation sous-jacent du client prend en charge la protection étendue, mais l’application n’a pas spécifié de liaison de service.The client’s underlying operating system supports extended protection, but the application did not specify a service binding. La demande n’est pas exposée à l’application, et une réponse d’autorisation refusée (401) est retournée au client.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Un message est consigné dans la source de la trace HttpListener indiquant la raison de l’échec.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  4. Le client a spécifié une liaison de service.The client specified a service binding. La liaison de service est comparée à la liste des liaisons de service autorisées.The service binding is compared to the list of allowed service bindings. Si elle correspond à une liaison de la liste, la demande est retournée à l’application.If it matches, the request is returned to the application. Sinon, la demande n’est pas exposée à l’application, et une réponse d’autorisation refusée (401) est automatiquement retournée au client.Otherwise, the request will not be exposed to the application, and an unauthorized (401) response will be automatically returned to the client. Un message est consigné dans la source de la trace HttpListener indiquant la raison de l’échec.A message will be logged to the HttpListener trace source specifying the reason for the failure.

Si cette approche simple basée sur une liste de noms de service autorisés est inappropriée, une application peut effectuer elle-même la validation des noms de service en interrogeant la propriété ServiceName.If this simple approach using an allowed list of acceptable service names is insufficient, an application may provide its own service name validation by querying the ServiceName property. Dans les cas 1 et 2 ci-dessus, la propriété retourne null.In cases 1 and 2 above, the property will return null. Dans le cas 3, elle retourne une chaîne vide.In case 3, it will return an empty string. Dans le cas 4, elle retourne le nom de service spécifié par le client.In case 4, the service name specified by the client will be returned.

Ces fonctionnalités de protection étendue peuvent également être utilisées par les applications serveur pour l’authentification avec d’autres types de demandes et quand des proxies approuvés sont utilisés.These extended protection features can also be used by server applications for authentication with other types of requests and when trusted proxies are used.

Voir aussiSee also