Sécuriser la programmation avec l’adaptateur Oracle Database
Comment protéger les informations d’identification lorsque j’utilise le plug-in Visual Studio Add Adapter Service ?
Lorsque vous utilisez le plug-in Add Adapter Service Reference pour créer un client WCF, vous devez fournir un nom d’utilisateur et un mot de passe pour la base de données Oracle. Vous ne devez effectuer cette opération qu’à partir de l’onglet Sécurité de la boîte de dialogue Configurer l’adaptateur . En entrant les informations d’identification Oracle à partir de l’onglet Sécurité au lieu de directement dans le champ Configurer un URI , vous vérifiez ce qui suit :
Les informations d’identification ne s’affichent pas dans le champ URI de la boîte de dialogue Ajouter un plug-in de référence du 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 Service Reference.
Pour plus d’informations sur la génération d’un client WCF à l’aide du plug-in Add Adapter Service Reference, notamment sur la façon d’entrer un nom d’utilisateur et un mot de passe pour la base de données Oracle, consultez Obtenir des métadonnées pour les opérations Oracle Database dans Visual Studio.
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 tous 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 Oracle Database est hébergé dans le processus 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 Oracle Database encourage l’utilisation de la classe ClientCredentials . Cette propriété spécifie si l’adaptateur accepte le nom d’utilisateur et le mot de passe de la base de données Oracle dans l’URI de connexion. AcceptCredentialsInUri a la valeur par défaut false, ce qui signifie que l’adaptateur lève une exception si l’URI de connexion contient des informations d’identification. Vous pouvez définir AcceptCredentialsInUri sur true pour fournir des informations d’identification dans l’URI de connexion.
L’exemple suivant montre comment utiliser la propriété Credentials pour définir les informations d’identification de la base de données Oracle sur un ChannelFactory.
// Create binding and endpoint
OracleDBBinding binding = new OracleDBBinding();
EndpointAddress endpointAddress = new EndpointAddress("oracleDB://Adapter");
// Create the channel factory
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))
// Set user name and password
factory.Credentials.UserName.UserName = "SCOTT";
factory.Credentials.UserName.Password = "TIGER";
// Open the channel factory
factory.Open();
L’exemple suivant montre comment utiliser la classe ClientCredentials pour définir les informations d’identification de la base de données Oracle sur un client WCF.
// Initialize a new client for the SQLEXECUTE operation from configuration
SQLEXECUTEClient sqlExecuteClient = new SQLEXECUTEClient("OracleDBBinding_SQLEXECUTE");
// Set user name and password
sqlExecuteClient.ClientCredentials.UserName.UserName = "SCOTT";
sqlExecuteClient.ClientCredentials.UserName.Password = "TIGER";
// Open the client
sqlExecuteClient.Open();
Comment puis-je fournir un échange de données plus sécurisé au-delà des limites du processus ?
L’adaptateur Oracle Database est hébergé in-process avec l’application ou le service qui l’utilise. Étant donné que l’adaptateur est hébergé en cours de traitement 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 de base de données Oracle. 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 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.