Comment sécuriser les connexions et authentifier les demandes (HTML)
[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]
Cette rubrique décrit les principales méthodes utilisées par Windows Runtime pour permettre aux applications Windows Runtime de sécuriser les connexions et de fournir les informations d’identification d’authentification nécessaires à l’établissement et à l’utilisation de connexions réseau sécurisées.
Technologies
- Windows.Networking.Sockets
- Windows.Networking.BackgroundTransfer
- Windows.Web.Syndication
- Windows.Web.AtomPub
Création de connexions de sockets sécurisées
Le protocole SSL (Secure Sockets Layer) et le protocole TLS (Transport Layer Security) le plus récent sont des protocoles de chiffrement conçus pour fournir l’authentification et le chiffrement pour la communication réseau. Ces protocoles sont conçus pour éviter les écoutes clandestines et la falsification lors de l’envoi et la réception de données réseau. Ces protocoles utilisent un modèle client-serveur pour les échanges de protocole. Ces protocoles utilisent des certificats numériques et des autorités de certification pour vérifier que le serveur est bien celui qu’il prétend être. Le protocole TLS est documenté dans la norme RFC 5246 de l’IETF. Le protocole SSL précédent était documenté par Netscape Communications. Le terme SSL est couramment utilisé pour faire référence à ces deux protocoles.
Un objet StreamSocket peut être configuré de manière à utiliser SSL/TLS pour les communications entre le client et le serveur. Cette prise en charge de SSL/TLS est limitée à l’utilisation de l’objet StreamSocket en tant que client dans la négociation SSL/TLS. SSL/TLS ne peut actuellement pas être utilisé par StreamSocketListener avec le StreamSocket créé à la réception d’une connexion pour activer SSL/TLS sur le StreamSocket créé, dans la mesure où la négociation SSL/TLS en tant que serveur n’est pas implémentée pour un StreamSocket.
Pour obtenir des exemples de création ou de mise à niveau d’une connexion de sockets sécurisée vers un service réseau, voir Comment sécuriser des connexions de socket avec TLS/SSL.
Création de connexions WebSocket sécurisées
Tout comme les connexions de sockets classiques, les connexions WebSocket peuvent également être chiffrées à l’aide des protocoles TLS (Transport Layer Security)/SSL (Secure Sockets Layer) lors de l’utilisation des fonctionnalités StreamWebSocket et MessageWebSocket de Windows 8 pour une application du Windows Store. En règle générale, vous utilisez une connexion WebSocket sécurisée. Cela augmente les chances que votre connexion s’établisse, car de nombreux serveurs proxy rejettent les connexions WebSocket non chiffrées.
Pour obtenir des exemples de création ou de mise à niveau d’une connexion de sockets sécurisée vers un service réseau, voir Comment sécuriser les connexions WebSocket avec TLS/SSL.
Outre le chiffrement TLS/SSL, un serveur peut avoir besoin d’une valeur d’en-tête Sec-WebSocket-Protocol pour pouvoir effectuer l’établissement d’une liaison initiale. Cette valeur, représentée par les propriétés StreamWebSocketInformation.Protocol et MessageWebSocketInformation.Protocol, indique la version de protocole de la connexion. Par ailleurs, elle permet au serveur d’interpréter correctement l’établissement d’une liaison de départ, ainsi que les données échangées par la suite. Grâce à ces informations relatives au protocole, si le serveur ne parvient pas à interpréter les données entrantes en toute sécurité, la connexion peut être fermée.
Si la demande initiale du client ne contient pas cette valeur ou si elle fournit une valeur qui ne correspond pas aux informations attendues par le serveur, la valeur attendue est envoyée du serveur au client lors de l’erreur d’établissement de liaison WebSocket.
Transmission d’informations d’identification d’authentification à un service Web
Les API réseau Windows Runtime qui permettent aux applications Windows Runtime d’interagir avec les services Web sécurisés fournissent chacune leurs propres méthodes pour initialiser un client ou pour définir un en-tête de demande avec les informations d’identification d’authentification du serveur et du proxy. Chaque méthode est définie par un objet PasswordCredential qui indique un nom d’utilisateur, un mot de passe et la ressource pour laquelle ces informations d’identification sont utilisées. Le tableau suivant fournit un mappage de ces API :
WebSockets |
|
Background Transfer |
|
Syndication |
|
AtomPub |
Rubriques associées
Comment sécuriser des connexions de socket avec TLS/SSL