web-dev-qa-db-fra.com

Un nom d'utilisateur et un mot de passe peuvent-ils être codés dur dans un système DSN

Nous avons un CRM hérité qui utilise une DSN avec authentification Windows pour se connecter à une instance de SQL Server 2005 (une partie de SBS 2003 Premium). Nous ferons bientôt une migration majeure qui nous laissant sans domaine Windows - si je comprends des choses, cela signifie que nous devons utiliser une méthode d'authentification alternative. Nous prévoyons également de migrer depuis le SQL Server 2005 sur SQL Server Express 2008 R2 dans le même délai.

Malheureusement, aucune modification du CRM n'est possible.

Laissant de côté les problèmes de sécurité évidents, est-il possible de coder un nom d'utilisateur et un mot de passe d'utilisateur dans un système DSN? Alternativement, c'est qu'une autre approche évidente de l'authentification que je manque?

--ÉDITER

Le DSN est défini dans l'administrateur de la source de données ODBC dans la section "Outils administratifs" du panneau de configuration sur les clients Windows.

--Edit 2

J'ai abandonné essayé de le faire dans le DSN grâce à la réponse de Jonathan. Heureusement, j'ai découvert un fichier .ini où je pourrais insérer un nom d'utilisateur/mot de passe fixe remplaçant les espaces réservés - problème résolu.

Un système DSN est stocké dans le registre et n'a pas la possibilité de stocker un mot de passe. Si vous souhaitez stocker le mot de passe, vous devez utiliser un fichier DSN et qui nécessiterait de modifier le CRM pour utiliser le fichier DSN que vous dites n'est pas possible. Habituellement, des applications utilisant un système DSN, s'appuient sur l'authentification SQL Server des utilisateurs pour leur sécurité. Lorsque l'application s'ouvre, il devrait inviter l'utilisateur à se connecter, ce qui est le nom d'utilisateur et le mot de passe utilisé avec les informations système DSN pour vous connecter au serveur de base de données. Si la DSN utilise l'authentification Windows et que vous éliminez votre domaine Windows, vous êtes coincé. Vous devriez changer le CRM pour le faire fonctionner différemment.

7

Les DSN varient selon le fournisseur. Je viens de trouver un mot de passe pour un Microsoft Oracle ODBC pour un système DSN. La situation: MS Access 2010 ne sauvegarder pas le mot de passe pour la table liée

\ Hklm\logiciel\ODBC\ODBC.INI {Nom de DSN}\PWD

Après édition, l'accès n'est plus invité à obtenir un mot de passe lorsque la source de données a été consultée pour la première fois.

2
Adam

En utilisant PowerShell, comme ce qui suit, j'ai pu créer un DSN avec des informations d'identification stockées pour une base de données Sybase SQL Anywhere:

$PropertyValue = @"
ServerName=<ServerName>
Integrated=NO
Host=<HostName>
DatabaseName=<DatabaseName>
"@ -split "`r`n"

$Credential = Get-Credential

Add-OdbcDsn -Name <DSNName> -DriverName "SQL Anywhere 12" -SetPropertyValue $PropertyValue -Platform 32-bit -DsnType System
New-ItemProperty -Path HKLM:\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\<DSNName> -PropertyType String -Name UID -Value $Credential.UserName
New-ItemProperty -Path HKLM:\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\<DSNName> -PropertyType String -Name PWD -Value $Credential.GetNetworkCredential().password
1
Chris Magnuson