Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La sécurité Windows Communication Foundation (WCF) comprend trois modes de sécurité courants qui se trouvent sur la plupart des liaisons prédéfinies : transport, message et « transport avec informations d’identification du message ». Deux modes supplémentaires sont spécifiques à deux liaisons : le mode « transport-credential only » trouvé sur le BasicHttpBinding, et le mode « Both », trouvé sur le NetMsmqBinding. Cette rubrique traite essentiellement des trois principaux modes de sécurité : Transport, Message et TransportWithMessageCredential.
Remarque : toutes les liaisons prédéfinies ne prennent pas nécessairement en charge chacun de ces modes. Cette rubrique, dans laquelle le mode est défini à l'aide des classes WSHttpBinding et NetTcpBinding, illustre comment définir les modes de sécurité à l'aide d'un programme ou dans la configuration.
Pour plus d’informations sur la sécurité WCF, consultez Vue d’ensemble de la sécurité, Sécurisation des services et Sécurisation des services et des clients. Pour plus d’informations sur le mode de transport et le message, consultez Sécurité du transport et Sécurité des messages.
Pour définir le mode de sécurité dans le code
Créez une instance de la classe de liaison en cours d'utilisation. Pour obtenir la liste des liaisons prédéfinies, consultez Liaisons fournies par le système. Cet exemple de code crée une instance de la classe WSHttpBinding.
Définissez la propriété
Modede l'objet retourné par la propriétéSecurity.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportVous pouvez également affecter la valeur message au mode, comme illustré dans l'exemple de code suivant.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.MessageVous pouvez aussi affecter la valeur transport avec informations d'identification de message au mode, comme illustré dans l'exemple de code suivant.
WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.TransportWithMessageCredential;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.TransportWithMessageCredentialVous pouvez enfin définir le mode dans le constructeur de la liaison, comme illustré dans l’exemple de code suivant.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);Dim b As New WSHttpBinding(SecurityMode.Message)
Définition de la propriété ClientCredentialType
La définition de la propriété ClientCredentialType dépend de la valeur affectée au mode de sécurité. Par exemple, si vous utilisez la classe WSHttpBinding et affectez au mode la valeur Transport vous devez affecter à la propriété ClientCredentialType de la classe HttpTransportSecurity une valeur appropriée.
Pour définir la propriété ClientCredentialType pour le mode de sécurité de niveau transport
Créez une instance de la liaison.
Définissez la propriété
ModesurTransport.Affectez à la propriété
ClientCredentialune valeur appropriée. L'exemple de code suivant affecte à la propriété la valeurWindows.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Transport b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows
Pour définir la propriété ClientCredentialType pour le mode de sécurité de niveau message
Créez une instance de la liaison.
Définissez la propriété
ModesurMessage.Affectez à la propriété
ClientCredentialune valeur appropriée. L'exemple de code suivant affecte à la propriété la valeurCertificate.WSHttpBinding b = new WSHttpBinding(); b.Security.Mode = SecurityMode.Message; b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;Dim b As New WSHttpBinding() b.Security.Mode = SecurityMode.Message b.Security.Message.ClientCredentialType = MessageCredentialType.Certificate
Pour définir le mode et la propriété ClientCredentialType dans la configuration
Ajoutez un élément de liaison approprié à l'élément <bindings> du fichier de configuration. L’exemple suivant ajoute un élément <wsHttpBinding>.
Ajoutez un élément
<binding>, puis affectez à son attributnameune valeur appropriée.Ajoutez un élément
<security>, puis affectez à l'attributmodeles valeursMessage,TransportouTransportWithMessageCredential.Si le mode a la valeur
Transport, ajoutez un élément<transport>, puis affectez à l'attributclientCredentialune valeur appropriée.L'exemple suivant affecte au mode la valeur
Transport", puis affecte à l'attributclientCredentialTypede l'élément<transport>la valeurWindows".<wsHttpBinding> <binding name="TransportSecurity"> <security mode="Transport" > <transport clientCredentialType = "Windows" /> </security> </binding> </wsHttpBinding >Vous pouvez également affecter au
security modela valeurMessage", suivie d'un élément<"message">. Cet exemple affecte auclientCredentialTypela valeurCertificate".<wsHttpBinding> <binding name="MessageSecurity"> <security mode="Message" > <message clientCredentialType = "Certificate" /> </security> </binding> </wsHttpBinding >L'utilisation de la valeur TransportWithMessageCredential forme un cas à part, expliqué ci-dessous.
Utilisation de TransportWithMessageCredential
Lorsque vous affectez au mode de sécurité la valeur TransportWithMessageCredential, le mécanisme chargé d'offrir la sécurité de niveau transport dépend du transport utilisé. Par exemple, le protocole HTTP utilise la sécurité Secure Sockets Layer (SSL) sur HTTP, c'est-à-dire HTTPS. Par conséquent, la définition d'une propriété ClientCredentialType pour tout objet de sécurité de transport (tel que HttpTransportSecurity) sera sans effet. En d’autres termes, vous pouvez uniquement définir la propriété ClientCredentialType de l’objet de sécurité de message (pour la liaison WSHttpBinding, il s’agit de l’objet NonDualMessageSecurityOverHttp).
Pour plus d’informations, consultez Comment utiliser des informations d’identification de sécurité de transport et de message.