INTRODUCTION
Windows Communication Foundation (WCF) ne dispose pas de la fonctionnalité pour envoyer des messages sécurisés et puis recevoir des réponses non sécurisés ou pour envoyer des messages non sécurisés et de recevoir des réponses sécurisées. Le correctif qui est décrit dans cet article ajoute un nouvel attribut enableUnsecuredResponse . La valeur par défaut de l’attribut enableUnsecuredResponse a la valeur false. Si vous définissez la valeur de cet attribut à la valeur true, les nouvelles fonctionnalités suivantes sont activées dans WCF :
-
Les clients WCF peuvent accepter des réponses non sécurisées même si les messages sortants sont sécurisés à l’aide du protocole Secure Socket Layer (SSL) pour signer le corps du message.
-
Les services WCF peuvent envoyer des réponses sécurisées qui n’ont aucun en-tête de sécurité dans les enveloppes SOAP, même si la requête est sécurisée.
Remarque L’attribut enableUnsecuredResponse ne s’applique qu’uniquement pour le type de liaison CustomBinding .
Résolution
Si vous utilisez la version.NET Framework 3.0, installez le correctif qui est décrit dans l’article suivant de la base de connaissances Microsoft :
967105 correctif : un correctif qui permet à WCF d’envoyer des messages sécurisés et recevoir sécurisée des réponses et d’envoyer des messages non sécurisés et de recevoir des réponses sécurisées, n’est disponible pour.NET Framework 3.0Si vous utilisez le.NET Framework 3.5 Service Pack 1 sous Windows 7 ou Windows Server 2008 R2, installez le correctif qui est décrit dans l’article suivant de la base de connaissances Microsoft :
977420 un correctif cumulatif est disponible pour résoudre des problèmes dans Windows Communication Foundation dans.NET Framework 3.5 SP1 pour Windows 7 et Windows Server 2008 R2 Si vous utilisez le.NET Framework 3.5 Service Pack 1 sur d’autres systèmes d’exploitation, installez le correctif suivant pour résoudre le problème. Un correctif pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est conçu pour résoudre uniquement le problème décrit dans cet article. Il s’applique uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n’êtes pas sérieusement concerné par ce problème, nous vous recommandons d’attendre le prochain service pack qui comprendra ce correctif. Pour résoudre ce problème immédiatement, contactez les Services de Support technique Microsoft pour obtenir le correctif. Pour obtenir une liste complète des numéros de téléphone des Services de Support technique Microsoft et des informations sur les coûts de support, visitez le site Web de Microsoft à l’adresse suivante :
http://support.microsoft.com/contactus/?ws=supportRemarque Dans des cas particuliers, des frais généralement encourus pour les appels au support technique peuvent être annulés si un technicien du support technique Microsoft détermine qu'une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour spécifique en question.
Conditions préalables
Pour appliquer ce correctif, vous devez disposer le.NET Framework 3.5 Service Pack 1.
Nécessite un redémarrage
Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce correctif logiciel si aucune instance du.NET Framework n’est utilisé.
Informations de remplacement du correctif
Ce correctif ne remplace aucun autre correctif.
Informations sur les fichiers
La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et heure dans le panneau de configuration.
Informations sur les fichiers pour toutes les versions basées sur les x86 de Windows Server 2003 et Windows XP
Nom de fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01-juin-2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01-juin-2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01-juin-2009 |
22:56 |
x86 |
Informations sur les fichiers pour toutes les versions basées sur les x64 de Windows Server 2003 et Windows XP
Nom de fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01-juin-2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01-juin-2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01-juin-2009 |
22:28 |
x64 |
Informations sur les fichiers pour toutes les versions basées sur les x86 de Windows Vista SP2 et de Windows Server 2008 SP2
Nom de fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
17,240 |
10-Jun-2009 |
06:55 |
System.runtime.serialization.dll |
3.0.4506.4120 |
970,752 |
10-Jun-2009 |
06:55 |
System.servicemodel.dll |
3.0.4506.4120 |
5,935,104 |
10-Jun-2009 |
06:55 |
Informations sur les fichiers pour toutes les versions basées sur les x64 de Windows Vista SP2 et de Windows Server 2008 SP2
Nom de fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
19,288 |
10-Jun-2009 |
06:56 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
x64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
x64 |
Informations sur les fichiers pour toutes les versions Itanium et Windows Server 2008 SP2
Nom de fichier |
Version de fichier |
Taille du fichier |
Date |
Heure |
Plateforme |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
33,640 |
10-Jun-2009 |
06:56 |
IA-64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
IA-64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
IA-64 |
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Plus d'informations
L’exemple de code suivant permet de tester l’attribut enableUnsecuredResponse :
ServiceBindingElementCollection serviceBec = new BindingElementCollection();
SecurityBindingElement serviceSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement(); serviceSbe.EnableUnsecuredResponse = true; serviceBec.Add(serviceSbe); serviceBec.Add(new TextMessageEncodingBindingElement()); serviceBec.Add(new HttpTransportBindingElement()); Binding serviceBinding = new CustomBinding(serviceBec); ServiceHost serviceHost = new ServiceHost(typeof(RequestReply)); … serviceHost.Open();
Client
BindingElementCollection clientBec = new BindingElementCollection();
SecurityBindingElement clientSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement(); clientSbe.EnableUnsecuredResponse = true; clientBec.Add(clientSbe); clientBec.Add(new TextMessageEncodingBindingElement()); clientBec.Add(new HttpTransportBindingElement()); Binding clientBinding = new CustomBinding(clientBec); IRequestReply channel = cf.CreateChannel(); try { channel.SendString("Hello"); cf.Close(); }