Partager via


Sécurité des applications distribuées

La sécurité Windows Communication Foundation (WCF) est divisée en trois domaines fonctionnels majeurs : la sécurité des transferts, le contrôle d’accès et l’audit. La sécurité de transfert assure l’intégrité, la confidentialité et l’authentification. La sécurité de transfert est fournie par l’une des options suivantes : sécurité du transport, sécurité des messages ou TransportWithMessageCredential.

Pour obtenir une vue d’ensemble de la sécurité des messages WCF, consultez Vue d’ensemble de la sécurité. Pour plus d’informations sur les deux autres éléments de sécurité WCF, consultez Autorisation et audit.

Scénarios de sécurité de transfert

Les scénarios courants qui utilisent la sécurité de transfert WCF sont les suivants :

  • Transfert sécurisé à l’aide de Windows. Un client et un service WCF sont déployés dans un domaine Windows (ou une forêt Windows). Les messages contiennent des données personnelles, de sorte que les exigences incluent l’authentification mutuelle du client et du service, l’intégrité des messages et la confidentialité des messages. De plus, la preuve est nécessaire qu’une transaction particulière s’est produite, par exemple, que le destinataire du message doit enregistrer les informations de signature.

  • Transfert sécurisé à l’aide UserName et HTTPS. Un client et un service WCF doivent être développés pour fonctionner sur Internet. Les informations d’identification du client s’authentifient auprès d’une base de données de paires nom d’utilisateur/mot de passe. Le service est déployé sur une adresse HTTPS à l’aide d’un certificat SSL (Secure Sockets Layer) approuvé. Étant donné que les messages se déplacent sur Internet, le client et le service doivent être mutuellement authentifiés, et la confidentialité et l’intégrité des messages doivent être conservées pendant le transfert.

  • Transfert sécurisé à l’aide de certificats. Un client et un service WCF doivent être développés pour fonctionner sur l’Internet public. Le client et le service ont tous deux des certificats qui peuvent être utilisés pour sécuriser les messages. Le client et le service utilisent Internet pour communiquer entre eux et effectuer des transactions à valeur élevée qui nécessitent l’intégrité, la confidentialité et l’authentification mutuelle des messages.

Intégrité, confidentialité et authentification

Trois fonctions ( intégrité, confidentialité et authentification) sont appelées sécurité de transfert. La sécurité de transfert fournit les fonctions qui aident à atténuer les menaces d’une application distribuée. Le tableau suivant décrit brièvement les trois fonctions qui composent la sécurité des transferts.

Fonction Descriptif
Intégrité L’intégrité est l’assurance que les données sont complètes et précises, surtout après qu’elles ont traversé d’un point à un autre, et éventuellement lues par de nombreux acteurs. L’intégrité doit être conservée pour empêcher la falsification des données et est généralement obtenue par la signature numérique d’un message.
Confidentialité La confidentialité est l’assurance qu’un message n’a pas été lu par quelqu’un d’autre que le lecteur prévu. Par exemple, un numéro de carte de crédit doit être conservé confidentiel, car il est envoyé sur Internet. La confidentialité est souvent fournie par le chiffrement des données à l’aide d’un schéma de clé publique/clé privée.
Authentification L’authentification est la vérification d’une identité revendiquée. Par exemple, lors de l’utilisation d’un compte bancaire, il est impératif que seul le propriétaire réel du compte soit autorisé à retirer des fonds. L’authentification peut être fournie par divers moyens. Une méthode courante est le système utilisateur/mot de passe. Une deuxième est l’utilisation d’un certificat X.509 fourni par un tiers.

Modes de sécurité

WCF a plusieurs modes de sécurité de transfert, qui sont décrits dans le tableau suivant.

mode de fonctionnement Descriptif
Aucun Aucune sécurité n’est fournie au niveau de la couche de transport ou de la couche de messages. Aucune des liaisons prédéfinies n’utilise ce mode par défaut, à l’exception de l’élément <basicHttpBinding> ou, lorsque vous utilisez du code, la BasicHttpBinding classe.
Transport Utilise un transport sécurisé tel que HTTPS pour l’intégrité, la confidentialité et l’authentification mutuelle.
Message Utilise la sécurité des messages SOAP pour l’intégrité, la confidentialité et l’authentification mutuelle. Les messages SOAP sont sécurisés conformément aux normes WS-Security.
Mode mixte Utilise la sécurité de transport pour l’intégrité, la confidentialité et l’authentification du serveur. Utilise la sécurité des messages (WS-Security et d’autres normes) pour l’authentification du client.

(Cette énumération pour ce mode est TransportWithMessageCredential.)
Les deux Effectue la protection et l’authentification aux deux niveaux. Ce mode est disponible uniquement dans l’élément <netMsmqBinding> .

Informations d’identification et sécurité de transfert

Les informations d’identification sont des données présentées pour établir une identité ou des fonctionnalités revendiquées. La présentation d’informations d’identification implique la présentation des données et la preuve de possession des données. WCF prend en charge divers types de justificatifs aux niveaux de sécurité du transport et des messages. Vous pouvez spécifier un type d'identifiants pour une liaison WCF.

Dans de nombreux pays ou régions, le permis de conduire est un exemple d’informations d’identification. Une licence contient des données représentant l’identité et les fonctionnalités d’un utilisateur. Il contient une preuve de possession sous la forme de l’image du possesseur. La licence est émise par une autorité approuvée, généralement un service de licences gouvernementaux. La licence est scellée et peut contenir un hologramme, indiquant qu'elle n'a pas été falsifiée ou contrefaite.

Prenons l’exemple de deux types d’informations d’identification prises en charge dans WCF : nom d’utilisateur et informations d’identification de certificat (X.509).

Pour les informations d’identification du nom d’utilisateur, le nom d’utilisateur représente l’identité revendiquée et le mot de passe présente la preuve de possession. L’autorité approuvée dans ce cas est le système qui valide le nom d’utilisateur et le mot de passe.

Dans les informations d’identification du certificat, le nom de l'objet, le nom alternatif de l'objet, ou les champs spécifiques du certificat peuvent être utilisés pour représenter l’identité et/ou les capacités revendiquées. La preuve de possession des données dans les informations d’identification est établie à l’aide de la clé privée associée pour générer une signature.

Pour plus d’informations sur la sécurisation des transferts de données et la spécification des informations d’identification, consultez Liaisons et Sécurité et Comportements de Sécurité.

Types d’informations d’identification du client de transport

Le tableau suivant présente les valeurs possibles utilisées lors de la création d’une application qui utilise la sécurité de transfert. Vous pouvez utiliser ces valeurs dans les paramètres de code ou de liaison.

Réglage Descriptif
Aucun Spécifie que le client n’a pas besoin de présenter d’informations d’identification. Cela se traduit par un client anonyme.
Élémentaire Spécifie l’authentification de base. Pour plus d’informations, consultez RFC2617, « Authentification HTTP : Authentification de base et authentification Digest ».
Résumé Spécifie l’authentification Digest. Pour plus d’informations, consultez RFC2617, « Authentification HTTP : Authentification de base et authentification Digest ».
Ntlm Spécifie l’authentification Windows à l’aide de la négociation SSPI sur un domaine Windows.

La négociation SSPI entraîne l’utilisation du protocole Kerberos ou de NT LanMan (NTLM).
Fenêtres Spécifie l’authentification Windows à l’aide de SSPI sur un domaine Windows. SSPI sélectionne entre le protocole Kerberos et NTLM comme service d’authentification.

SSPI tente d’abord le protocole Kerberos ; si cela échoue, il utilise ensuite NTLM.
Certificat Effectue l’authentification du client à l’aide d’un certificat, généralement X.509.

Types d'informations d'identification du client de message

Le tableau suivant présente les valeurs possibles utilisées lors de la création d’une application qui utilise la sécurité des messages. Vous pouvez utiliser ces valeurs dans les paramètres de code ou de liaison.

Réglage Descriptif
Aucun Permet au service d’interagir avec des clients anonymes.
Fenêtres Permet aux échanges de messages SOAP de se produire dans le contexte authentifié d’une information d’identification Windows. Utilise le mécanisme de négociation SSPI pour choisir à partir du protocole Kerberos ou de NTLM en tant que service d’authentification.
Nom d’utilisateur Permet au service de demander que le client soit authentifié avec des informations d’identification de nom d’utilisateur. Notez que WCF n’autorise aucune opération de chiffrement avec le nom d’utilisateur, par exemple la génération d’une signature ou le chiffrement de données. Par conséquent, WCF exige que le transport soit sécurisé lorsqu'on utilise des informations d'identification de nom d'utilisateur.
Certificat Permet au service de demander que le client soit authentifié à l’aide d’un certificat.
CardSpace Permet au service de demander que le client soit authentifié à l’aide d’un CardSpace.

Certifications de programmation

Pour chacun des types d’informations d’identification du client, le modèle de programmation WCF vous permet de spécifier les valeurs d’informations d’identification et les validateurs d’informations d’identification à l’aide de comportements de service et de comportements de canal.

La sécurité WCF a deux types d’informations d’identification : les comportements d’informations d’identification du service et les comportements d’informations d’identification de canal. Les comportements d’informations d’identification dans WCF spécifient les données réelles, à savoir les informations d’identification utilisées pour répondre aux exigences de sécurité exprimées par le biais de liaisons. Dans WCF, une classe cliente est le composant runtime qui convertit entre l’appel d’opération et les messages. Tous les clients héritent de la classe ClientBase<TChannel>. La ClientCredentials propriété sur la classe de base vous permet de spécifier différentes valeurs d’informations d’identification du client.

Dans WCF, les comportements de service sont des attributs appliqués à la classe implémentant un contrat de service (interface) pour contrôler le service par programmation. La ServiceCredentials classe vous permet de spécifier des certificats pour les informations d’identification du service et les paramètres de validation du client pour différents types d’informations d’identification client.

Modèle de négociation pour la sécurité des messages

Le mode de sécurité des messages vous permet d’effectuer une sécurité de transfert afin que les informations d’identification du service soient configurées au niveau du client hors bande. Par exemple, si vous utilisez un certificat stocké dans le magasin de certificats Windows, vous devez utiliser un outil tel qu'un composant logiciel enfichable MMC (Microsoft Management Console).

Le mode de sécurité des messages vous permet également d’effectuer une sécurité de transfert afin que les informations d’identification du service soient échangées avec le client dans le cadre d’une négociation initiale. Pour activer la négociation, définissez la NegotiateServiceCredential propriété sur true.

Voir aussi