Programmation sécurisée avec l’adaptateur SQL
Comment protéger les informations d’identification lorsque j’utilise le plug-in Visual Studio Add Adapter Service Reference ?
Lorsque vous utilisez le plug-in Add Adapter Service Reference pour créer un client WCF, vous devrez peut-être fournir un nom d’utilisateur et un mot de passe pour la base de données SQL Server. Vous devez entrer les informations d’identification sous l’onglet Sécurité de la boîte de dialogue Configurer l’adaptateur . L’adaptateur SQL ne fournit pas d’option permettant de spécifier le nom d’utilisateur et le mot de passe dans le cadre de l’URI de connexion. Cela garantit les éléments suivants :
Les informations d’identification ne s’affichent pas dans le champ Configurer un URI de la boîte de dialogue Ajouter un plug-in de référence de service d’adaptateur dans laquelle toute personne ayant accès à l’écran de votre ordinateur peut les lire.
Les informations d’identification n’apparaissent pas dans le fichier de configuration généré par le plug-in Add Adapter Reference Service.
Pour plus d’informations sur la façon de générer un client WCF à l’aide du plug-in Ajouter une référence de service d’adaptateur, notamment comment entrer un nom d’utilisateur et un mot de passe pour la base de données SQL Server, consultez Obtenir des métadonnées pour les opérations SQL Server dans Visual Studio à l’aide de l’adaptateur SQL.
Quelles sont les meilleures pratiques pour définir des informations d’identification dans le code ?
WCF fournit la classe ClientCredentials pour vous aider à configurer les informations d’identification qu’un objet de communication client, tel qu’un ChannelFactory, utilise pour s’authentifier auprès d’un service. En utilisant la classe ClientCredentials , vous vous assurez que WCF accepte les mécanismes d’authentification spécifiés dans la pile de canaux de cet objet et les applique à l’échange entre votre client et le service.
Étant donné que l’adaptateur SQL est hébergé in-process avec son application consommatrice, il n’est pas impératif d’utiliser la classe ClientCredentials pour définir des informations d’identification sur les objets de communication client utilisés par l’application consommatrice. Il est toutefois considéré comme une bonne pratique de le faire.
L’adaptateur SQL nécessite l’utilisation de la classe ClientCredentials pour passer des informations d’identification par programmation. La propriété de liaison AcceptCredentialsInUri est ignorée par l’adaptateur SQL pour empêcher la transmission d’informations d’identification dans l’URI.
L’exemple suivant montre comment utiliser la propriété Credentials pour définir les informations d’identification de la base de données SQL Server sur un ChannelFactory.
// Create binding and endpoint
SqlAdapterBinding binding = new SqlAdapterBinding();
EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");
// Create the channel factory
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))
// Set user name and password
factory.Credentials.UserName.UserName = "myuser";
factory.Credentials.UserName.Password = "mypassword";
// Open the channel factory
factory.Open();
L’exemple suivant montre comment utiliser la classe ClientCredentials pour définir des informations d’identification pour la base de données SQL Server sur un client WCF.
// Initialize a new client for the SELECT operation on the Employee table
SqlAdapterBinding binding = new SqlAdapterBinding();
EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");
TableOp_dbo_EmployeeClient client = new TableOp_dbo_EmployeeClient(binding,address);
// Set user name and password
client.ClientCredentials.UserName.UserName = "myuser";
client.ClientCredentials.UserName.Password = "mypassword";
// Open the client
client.Open();
Comment puis-je fournir un échange de données plus sécurisé au-delà des limites des processus ?
L’adaptateur SQL est hébergé in-process avec l’application ou le service qui l’utilise. Étant donné que l’adaptateur est hébergé in-process avec le consommateur, il n’est pas nécessaire de fournir une sécurité sur les messages échangés entre le consommateur et l’adaptateur SQL. Toutefois, si l’application ou le service consommateur envoie des messages qui contiennent des informations de base de données sensibles au-delà d’une limite de processus à un autre service ou client, vous devez prendre des mesures pour assurer une protection adéquate de ces données dans votre environnement. Windows Communication Foundation (WCF) offre de nombreuses options pour aider à sécuriser les messages envoyés entre les clients et les services. Pour plus d’informations sur la sécurisation des messages envoyés entre les clients et les services dans WCF, consultez Sécurisation des services et des clients. Pour plus d’informations générales sur les fonctionnalités de sécurité fournies par WCF, consultez Sécurité Windows Communication Foundation.
Voir aussi
Sécuriser vos applications SQL
Meilleures pratiques pour sécuriser l’adaptateur SQL