Sécurité .NET Framework et IIS
Windows Server AppFabric utilise les fonctionnalités de sécurité performantes d'IIS et .NET Framework version 4 pour sécuriser les services .NET Framework 4 hébergés dans Service d’activation des processus Windows (WAS). Pour vous aider à comprendre comment configurer correctement la sécurité du client vers le service dans AppFabric, il est important d'assimiler les options de sécurité proposées par IIS et .NET Framework.
En règle générale, plusieurs niveaux d'options de sécurité sont disponibles : vous devez utiliser le niveau le plus approprié à votre déploiement. Chaque niveau de sécurité permet de sécuriser des ressources spécifiques. Par exemple, les outils fournis avec IIS permettent généralement de sécuriser des artefacts IIS, tels que les sites et applications, tandis que les paramètres de sécurité de .NET Framework 4 peuvent être appliqués aux concepts associés aux services WCF/WF, tels que les services, les points de terminaison et les opérations.
Pour plus d'informations sur la sécurité, consultez les rubriques Sécurité dans Windows Communication Foundation (https://msdn.microsoft.com/fr-fr/library/ms732362.aspx) et Sécurité IIS (https://msdn.microsoft.com/fr-fr/library/ms172965.aspx).
Sécurité IIS et AppFabric
IIS affecte la sécurité d'une application à partir du client à l'origine de l'appel et également lorsque le service .NET Framework accède aux magasins de données de surveillance et de persistance. IIS affecte la sécurité de AppFabric dans les zones suivantes :
IIS_IUSRS. Groupe de sécurité Windows qui permet de gérer l'accès aux fichiers et aux dossiers au moment de l'exécution dans le cadre d'une installation IIS par défaut.
Sécurité Remarque Ne confondez pas le groupe de sécurité Windows IIS_IUSRS avec le nom de connexion SQL Serveur IIS_IUSRS. Bien qu'associées, ces entités sont bien distinctes. Identité de pool d'applications. IIS insère dynamiquement toutes les identités de pool d'applications dans le groupe IIS_IUSRS au moment de l'exécution. Ce groupe de sécurité est doté d'autorisations d'accès aux magasins de données nécessaires, particulièrement au magasin de données de persistance. Pour plus d’informations, consultez la rubrique Sécurité SQL Server.
Sécurité .NET Framework pour AppFabric
Lorsque nous évoquons la sécurité pour les services .NET Framework configurés dans AppFabric, nous faisons référence à WCF. WCF définit le protocole de transport utilisé pour communiquer entre un client WCF et un service .NET Framework (WCF ou WF). Cela fait partie de .NET Framework qui fournit un modèle de programmation unifié pour une création rapide d'applications orientées services qui communiquent entre le Web et l'entreprise. WCF n'intègre pas uniquement des infrastructures de sécurité existantes, mais étend également une sécurité distribuée entre des domaines exécutant uniquement Windows en utilisant des messages SOAP sécurisés. Pour plus d'informations, consultez les rubriques Sécurité dans Windows Communication Foundation (https://msdn.microsoft.com/fr-fr/library/ms732362.aspx) and Vue d'ensemble de la sécurité (https://msdn.microsoft.com/fr-fr/library/ms735093.aspx).
Association des sécurités IIS et .NET Framework
Pour préserver l'intégrité d'une application, il est très important de s'assurer qu'un message envoyé à un service n'est ni affiché ni modifié durant son transfert. Pour ce faire, vous devez utiliser les fonctionnalités de chiffrement et de signature. Toutefois, le transfert de message n'est sécurisé que si vous pouvez également valider ou authentifier rigoureusement l'identité de l'application cliente à l'origine de l'appel. Avec AppFabric, il est important de comprendre le fonctionnement conjoint d'IIS et de WCF pour vous en assurer.
Pour plus d'informations sur les modèles et les pratiques touchant à la sécurité des services Web, consultez le guide Patterns & Practices : Improving Web Services Security Guide (https://go.microsoft.com/fwlink/?LinkId=183161) (en anglais).
Authentification IIS dans AppFabric
Les mécanismes de sécurité du transport de WCF dans Windows dépendent de la liaison et du transport utilisés. Par exemple, lors de l'utilisation de la classe WSHttpBinding, le transport utilise HTTP et le mécanisme principal permettant de sécuriser le transport est le protocole SSL (Secure Sockets Layer) sur HTTP, plus communément appelé HTTPS. La sécurité des messages utilise la spécification WS-Security pour sécuriser les messages. Cela consiste à améliorer la messagerie SOAP pour assurer la confidentialité, l'intégrité et l'authentification au niveau des messages SOAP (plutôt qu'au niveau du transport).
Modes de services hébergés
Les services hébergés peuvent être exécutés selon deux modes : mode de transport mixte ou mode de compatibilité ASP.NET. Le mode est contrôlé par l'indicateur de configuration au niveau de l'application aspNetCompatibilityEnabled
. Vous pouvez également obtenir cet indicateur au moment de l'exécution à partir de la propriété statique ServiceHostingEnvironment.AspNetCompatibilityEnabled
. Par défaut, l'indicateur aspNetCompatibilityEnabled
est défini sur false : les services s'exécutent donc en mode de transport mixte, tant que vous n'avez pas modifié explicitement ce paramètre.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>
Mode de transport mixte
En mode de transport mixte, le module HTTP intercepte la demande dans la première étape du pipeline BeginRequest. Lorsque la demande arrive, le module HTTP définit HttpContext.Current sur NULL et annule le cas échéant l'emprunt d'identité du thread. Comme la demande du client est interceptée dès la première étape, les autres fonctionnalités HTTP sont désactivées automatiquement. Ainsi, lors de l'exécution des services en mode de transport mixte, ceux-ci n'ont pas accès aux fonctionnalités ASP.NET HTTP suivantes :
HttpContext.Current. Cette fonctionnalité est toujours définie sur NULL dans ce mode. WCF fournit un équivalent à cette fonctionnalité : OperationContext.Current.
Autorisation Fichier/URL. Cette fonctionnalité d'autorisation de couche de transport est habituellement activée par le biais de la section <system.web/authorization> du fichier .config des services ASMX. L'autorisation de transport est désactivée en mode mixte dans WCF. La seule possibilité pour activer l'autorisation fichier/URL consiste à implémenter une autorisation au niveau du message dans WCF.
Emprunt d'identité. L'emprunt d'identité permet au service d'agir en tant que client lors de l'exécution d'une action sur le serveur. Cette fonctionnalité d'emprunt d'identité ASP.NET est habituellement activée par le biais de la section <system.web/identity> du fichier .config des services ASMX. Elle n'est pas disponible dans la couche de transport WCF en mode mixte.
État de session. L'état de session ASP.NET n'est pas pris en charge en mode mixte. WCF possède sa propre implémentation de session fiable, qui permet une gestion plus souple de l'état de session. Le problème le plus important auquel est confronté WCF réside dans le fait que l'état de session ne survit pas à un recyclage d'application et ne fonctionne pas dans les domaines privés ou les batterie de serveurs Web. Ceci est dû au fait qu'il n'existe aucun mécanisme de partage de l'état entre les applications ou les processus, contrairement au service d'état ASP.NET (désactivé).
Autres fonctionnalités HTTP Les autres fonctionnalités HTTP reposent sur HttpContext.Current et ne sont pas prises en charge en mode mixte. Par exemple, vous ne pouvez pas vous attendre à recevoir un résultat correct à partir de ConfigurationManager.AppSettings. La fonctionnalité de globalisation via <system.web/globalization> n'est pas disponible.
L'authentification IIS est ignorée dans les appels WCF aux services .NET Framework dans le cadre d'une exécution en mode de transport mixte. C'est pourquoi, la sécurité WCF est le mécanisme principal d'authentification et de sécurisation du transfert de messages entre le client WCF et le service .NET Framework. En mode de transport mixte, tous les transports sont traités de manière identique. Un service peut posséder plusieurs points de terminaison WCF, lesquels peuvent écouter le même transport ou des transports différents, comme HTTP, net.tcp, net.pipe, net.msmq, etc. Cependant, les services hébergés exécutés en mode de transport mixte reposent toujours sur ASP.NET et IIS pour fournir l'environnement d'hébergement, la configuration des applications et le déploiement.
Mode de compatibilité ASP.NET
Pour utiliser l'authentification IIS sur les applications hébergées de WAS et de AppFabric, vous devez utiliser le mode de compatibilité ASP et la sécurité de transport WCF. Vous pouvez profiter des avantages des fonctionnalités de sécurité IIS suivantes uniquement en utilisant le mode de compatibilité ASP :
contrôlez les utilisateurs et les membres de groupes Windows qui sont autorisés à se connecter à un site ou à une application hébergeant des services utilisant le Gestionnaire des services Internet.
Convertissez un site Web en répertoire virtuel IIS, puis définissez de deux façons les paramètres de sécurité vers le chemin d'accès physique du répertoire virtuel. L'authentification de transfert ordonne à IIS de transmettre au système de fichiers Windows les informations d'identification de l'utilisateur authentifié lors de l'accès au chemin d'accès physique du répertoire virtuel. Vous pouvez également désigner une identité d'utilisateur spécifique pour le processus hébergeant vos services .NET Framework pour accéder à tout le contenu par le biais du chemin d'accès physique spécifié.
Sélectionnez la méthode d'authentification IIS appropriée (authentification anonyme, de base, Forms, Digest et Windows ou emprunt d'identité par formulaire ASP.NET) pour contrôler la sécurité des appels vers les services associés au site Web.
Vous pouvez profiter des fonctionnalités de sécurité IIS suivantes, que le mode de compatibilité ASP soit activé ou non :
Configurez les paramètres SSL pour utiliser le chiffrement 64 ou 128 bits, puis configurez la gestion des certificats clients pour les demandes entrantes.
Créez des règles d'autorisation pour accorder ou refuser l'accès des sites Web ou des applications à l'utilisateur.
Utilisez les fonctionnalités de journalisation d'IIS pour créer un journal d'audit de sécurité des demandes entrantes.
Modifiez la sécurité concernant les chaînes de connexion des bases de données de surveillance et de persistance.
Gérez les paramètres de liaison pour les appels des clients vers les services.
Configurez les autorisations d'exécution au niveau des fichiers (Contrôle total, Lecture et exécution, Répertorier le contenu des fichiers, Écriture, etc.) sur le site Web ou les applications de service qu'il contient.
Remplacez l'identité NetworkService par défaut d'un pool d'applications personnalisé par une identité spécifique sous laquelle elle peut s'exécuter. Si la sécurité intégrée est utilisée avec SQL Server, il s'agit de l'identité utilisée pour effectuer des appels dans SQL Server.
Pour plus d'informations, consultez la page Services WCF et ASP.NET (https://msdn.microsoft.com/fr-fr/library/aa702682.aspx).
Conseils en matière d'authentification
Pour activer l'authentification IIS pour une application :
Utilisez le mode de compatibilité ASP
Utilisez la liaison WCF HTTP qui prend en charge le mode de sécurité Transport (basicHttpBinding, wsHttpBinding et wsFederationHttpBinding)
Une fois ces conditions remplies, configurez IIS et le service .NET Framework hébergé pour utiliser les paramètres de sécurité compatibles avec IIS et WCF. Configurez les différents paramètres de sécurité de l'application pour qu'ils correspondent à la sécurité et aux liaisons de tous les services associés. La spécification d'un autre modèle provoque une erreur d'activation du service WCF. Les modes de sécurité dans WCF (dans ce cas, le mode de sécurité Transport) sont spécifiés dans les éléments de liaison. Dans la mesure où ils doivent prendre en charge l'authentification, veillez à ce que les paramètres de sécurité WCF sélectionnés soient compatibles avec les paramètres IIS. Le transport mappe vers le mode d'authentification WCF configuré pour la liaison. Le service régit le mode d'authentification via la configuration de liaison associée et le fichier de configuration du client WCF doit s'y conformer. Le client doit être configuré pour fournir la forme d'informations d'identification adaptée, afin de prendre en charge le modèle d'authentification fourni par le service. Comme AppFabric ne fournit pas d'élément d'interface utilisateur pour effectuer ce type de modifications, vous devez les apporter manuellement dans le fichier Web.config applicable.
Sécurité Remarque |
---|
wsDualHttpBinding prend uniquement en charge la sécurité basée sur le message : il vous est donc impossible de l'utiliser dans vos services en même temps que l'authentification IIS. |
2011-12-05