Sécurisation des services Web XML créés à l'aide d'ASP.NET

Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.

Pour décider quelle est la meilleure implémentation de sécurité pour un service Web, il faut commencer par prendre en compte deux principes de sécurité clés : l'authentification et l'autorisation. L'authentification est le processus consistant à valider une identité sur la base d'informations d'identification, telles que le nom d'utilisateur et le mot de passe, auprès d'une autorité. Une fois l'identité authentifiée, l'autorisation détermine si cette identité est autorisée à accéder à une ressource particulière.

Les services Web créés à l'aide d'ASP.NET peuvent choisir leurs options de sécurité parmi les options d'authentification et d'autorisation offertes par ASP.NET ou une sécurité personnalisée basée sur SOAP. ASP.NET fonctionne conjointement à Internet Information Services (IIS) pour fournir plusieurs options d'authentification et d'autorisation. Il est également possible de créer options d'authentification personnalisées, telles que l'utilisation d'en-têtes SOAP. En outre, ASP.NET offre la possibilité, appelée représentation, d'exécuter une demande à l'aide des informations d'identification du client. Pour plus d'informations sur l'utilisation de la représentation, consultez Représentation ASP.NET.

Cette rubrique récapitule les options d'authentification et d'autorisation disponibles pour les services Web générés à l'aide d'ASP.NET. Pour plus d'informations sur les options de sécurité disponibles pour les applications Web ASP.NET, consultez Sécurisation d'applications Web ASP.NET et Génération d'applications ASP.NET sécurisées : authentification, autorisation et communication sécurisée (page éventuellement en anglais).

Pour plus d'informations sur l'accès aux ressources distantes à partir d'applications basées sur ASP.NET, consultez les rubriques sur le modèle de représentation/délégation et le modèle de sous-système approuvé dans le Chapitre 3 de Génération d'applications ASP.NET sécurisées (page éventuellement en anglais).

Options d'authentification pour les services Web XML

Les services Web créés à l'aide d'ASP.NET ont plusieurs options pour authentifier les clients, donc la question est : laquelle est la bonne pour un service Web donné ? Pour choisir la bonne option de sécurité, un développeur doit entre autres choisir le niveau de sécurité et de performance. Pour certains services Web, il est essentiel que les informations d'identification du client soient envoyées sur le réseau avec chiffrement, si bien qu'un algorithme de chiffrage des informations d'identification du client est indispensable. Par exemple, un développeur qui écrit un service Web utilisant des cartes de crédit s'inquiètera probablement plus des informations d'identification du client susceptibles d'être subtilisées que de la charge supplémentaire induite par le chiffrement des données de carte de crédit.

Le tableau suivant est un résumé des options d'authentification disponibles pour les services Web construits à l'aide d'ASP.NET. Les options préfixées avec Windows font partie des options d'authentification Microsoft Windows disponibles pour les services Web créés à l'aide d'ASP.NET.

Résumé des options d'authentification

Option d'authentification Description

Windows - Basic

À utiliser pour l'identification non sécurisée de clients, étant donné que le nom d'utilisateur et le mot de passe sont envoyés dans des chaînes codées en base 64 dans du texte brut. Les mots de passe et noms d'utilisateur sont codés, mais pas chiffrés dans ce type d'authentification. Un utilisateur malveillant équipé d'un outil d'analyse de réseau peut intercepter des noms d'utilisateur et des mots de passe.

Windows - Basic via SSL

À utiliser pour l'identification sécurisée de clients dans les scénarios Internet. Le nom d'utilisateur et le mot de passe sont envoyés sur le réseau à l'aide du chiffrement SSL (Secure Sockets Layer) plutôt que dans du texte brut. Cette option est relativement facile à configurer et fonctionne pour les scénarios Internet. Toutefois, l'utilisation de SSL dégrade la performance.

Windows - Digest

À utiliser pour l'identification sécurisée de clients dans les scénarios Internet. Utilise le hachage pour transmettre les informations d'identification du client de façon chiffrée afin que le mot de passe ne soit pas transmis en texte clair. De plus, l'authentification Digest peut fonctionner à travers des serveurs proxy. Toutefois, elle n'est pas majoritairement prise en charge sur d'autres plate-formes.

Windows - Integrated Windows

Utilise NTLM ou Kerberos. Utilise un échange de chiffrement avec le navigateur Web Microsoft Internet Explorer de l'utilisateur.

Windows - Client Certificates

À utiliser pour l'identification sécurisée de clients dans les scénarios Internet et intranet. Requiert que chaque client obtienne un certificat d'une autorité de certification mutuellement approuvée. Facultativement, les certificats sont mappés aux comptes d'utilisateurs, qui sont utilisés par IIS pour autoriser l'accès au service Web.

Forms

Non pris en charge par les services Web. C'est un système qui redirige les demandes non authentifiées vers un formulaire HTML à l'aide d'une redirection HTTP côté client. La plupart des clients de services Web ne souhaiteront pas fournir d'informations d'identification à l'aide d'une interface utilisateur ; vous devrez travailler là-dessus si vous souhaitez utiliser l'authentification par formulaire.

SOAP headers – Custom

Utile pour les scénarios Internet sécurisés et non sécurisés. Les informations d'identification de l'utilisateur sont passées dans l'en-tête SOAP du message SOAP. Le serveur Web, indépendamment de la plate-forme qui héberge le service Web, fournit une implémentation d'authentification personnalisée.

Pour toutes les options répertoriées ci-dessus, sauf l'utilisation des en-têtes SOAP, les paramètres de sécurité sont spécifiés à l'aide d'une combinaison de fichiers de configuration et IIS. L'option des en-têtes SOAP personnalisés est détaillée après la section Autorisation, étant donné que cette solution implique à la fois authentification et autorisation.

Authentification Windows

IIS et ASP.NET prennent tous deux en charge l'authentification des applications Web, y compris des services Web, à l'aide de la sécurité intégrée à Windows. Windows fournit trois options pour l'authentification : Basic, Digest et Integrated Windows. En outre, chaque option peut être utilisée avec SSL. Comme toutes les options d'authentification Windows sauf Basic chiffrent les données dans un formulaire, le niveau supplémentaire de chiffrement offert par SSL n'est généralement utilisé qu'en combinaison avec Basic ou Client Certificates.

Quelle que soit l'option d'authentification Windows utilisée, les procédures de configuration du service Web et du client de service Web sont semblables. Pour plus d'informations, consultez Comment : configurer un service Web XML pour l'authentification Windows. Pas besoin d'ajouter de code à un service Web pour utiliser l'authentification Windows, étant donné que les options d'authentification sont définies dans un fichier de configuration et IIS. Le code faisant passer les informations d'identification du client au service Web doit être ajouté à un client de service Web.

Si SSL fait partie du mécanisme d'authentification utilisé par un service Web, SSL doit être configuré pour l'application Web qui héberge le service Web ou pour le service Web lui-même, à l'aide d'IIS. La description de service et, par conséquent, les classes proxy générées à partir de la description de service indiqueront que le service Web utilise SSL (si l'accès à la description de service et à la page d'aide du service se fait à l'aide de SSL). L'URL vers le service Web dans la description de service sera préfixée avec https. Pour plus d'informations sur la configuration de SSL, consultez la documentation IIS.

Authentification par certificat client

L'aide des certificats client représente un mécanisme sécurisé pour l'authentification, car les clients sont tenus d'envoyer un document électronique, appelé certificat client, qui identifie un client à l'aide d'une connexion SSL au serveur Web. La connexion SSL chiffre les informations d'identification du client contenues dans le certificat client lorsqu'elles sont envoyées sur le réseau. La communication entre le client et le serveur Web est chiffrée à l'aide d'une combinaison de clés de chiffrement envoyées par le client et de clés fournies par le serveur Web. Une fois la communication établie, seuls les ordinateurs client et serveur peuvent communiquer l'un avec l'autre à l'aide de cette connexion SSL.

Un certificat client peut être obtenu auprès d'une autorité de certification, qui peut ou être le serveur Web lui-même ou un intermédiaire approuvé entre le client et serveur. Une fois le certificat obtenu et le serveur Web configuré pour accepter des certificats clients, un client peut envoyer le certificat client au serveur Web via une connexion SSL lorsqu'un service Web est appelé. Pour plus d'informations sur les certificats client, consultez la documentation IIS. Pour plus d'informations sur la configuration de l'authentification par certificat client pour un service Web, consultez Comment : configurer un service Web XML pour l'authentification Windows.

Options d'autorisation pour les services Web XML

Le but de l'autorisation est de déterminer si une identité doit se voir accorder le type d'accès demandé à une ressource donnée. Il y a deux façons fondamentales d'autoriser l'accès à une ressource donnée : l'autorisation de fichier et l'autorisation d'URL. L'autorisation de fichier peut être utilisée dès lors que l'authentification Windows est utilisée, vu que les autorisations sont définies dans IIS sur la base de fichiers. L'autorisation d'URL peut être utilisée avec n'importe lequel des mécanismes d'authentification intégrés pris en charge par ASP.NET. Avec l'autorisation d'URL, la configuration se fait via un fichier de configuration qui peut accorder ou refuser aux utilisateurs l'accès à tout fichier associé à ASP.NET, y compris les fichiers .asmx.

Pour plus d'informations sur la configuration de l'autorisation basée sur les fichiers, consultez la documentation IIS.

Pour plus d'informations sur la configuration de l'autorisation à l'aide d'un fichier de configuration, consultez Autorisation ASP.NET.

Authentification personnalisée à l'aide d'en-têtes SOAP

Les mécanismes d'authentification Windows, y compris les certificats clients, reposent sur le transport HTTP, alors que SOAP ne dépend d'aucun transport. Les services Web construits à l'aide d'ASP.NET utilisent SOAP via HTTP, ainsi que des implémentations HTTP-POST et HTTP-GET qui retournent les documents XML non-SOAP. Ainsi, une raison de créer un mécanisme d'authentification personnalisé est de séparer l'authentification du transport. Cela est possible si l'on passe les informations d'identification dans l'en-tête SOAP.

Les en-têtes SOAP sont un excellent moyen de passer des informations hors plage ou sans rapport avec la sémantique d'un service Web. Contrairement à l'élément Body d'un message SOAP, qui inclut les paramètres d'entrée et de sortie d'opération de service Web traités par la méthode de service Web, l'élément Header est facultatif et peut donc être traité par l'infrastructure. C'est-à-dire traité par l'infrastructure développée pour fournir un mécanisme d'authentification personnalisé.

Pour une description d'un moyen d'utiliser les en-têtes SOAP pour l'authentification, consultez Comment : exécuter l'authentification personnalisée à l'aide d'en-têtes SOAP.

Pour utiliser des en-têtes SOAP pour l'authentification, un client de service Web enverrait ses informations d'identification au service Web en ajoutant l'en-tête SOAP attendu à la demande SOAP et le remplissant avec ses informations d'identification. Pour utiliser l'authentification par les en-têtes SOAP, un service Web doit faire deux choses : spécifier qu'il attend l'en-tête SOAP contenant les informations d'identification et autoriser l'accès client au service Web.

Voir aussi

Tâches

Comment : configurer un service Web XML pour l'authentification Windows
Comment : exécuter l'authentification personnalisée à l'aide d'en-têtes SOAP

Référence

NetworkCredential
CredentialCache
X509Certificate

Autres ressources

Sécurisation d'applications Web ASP.NET
Création de services Web XML à l'aide d'ASP.NET