Se connecter à SQL Server avec l'authentification Windows dans un domaine différent

74

J'essaie de me connecter à un serveur SQL distant sur un VPN d'un autre domaine. Lorsque j'entre le nom du serveur sur le serveur SQL et que je choisis des paramètres de connexion supplémentaires pour ajouter des éléments supplémentaires nécessaires à mon école:

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password

Je reçois l'erreur suivante:

Échec de la connexion. La connexion provient d'un domaine non approuvé et ne peut pas être utilisée avec l'authentification Windows.

fxuser
la source
Le seul problème avec la solution Windows Credential Manager est que si vous avez une multitude de bases de données à gérer, vous devez avoir une entrée pour chaque base de données et les mettre à jour à chaque fois que vous devez mettre à jour vos mots de passe de domaine. Pour certaines personnes, cela pourrait être tous les 30 à 60 jours.
Smehaffie
Ce post est un peu lié.
RBT
@smehaffie, vous pouvez facilement utiliser les scripts et la commande "cmdkey / add" pour conserver vos mots de passe - il met également à jour.
Monsieur Magoo

Réponses:

70

Vous essayez de transmettre les informations d'identification Windows en texte brut à partir de la chaîne de connexion d'une application. Ce n’est tout simplement pas la façon dont l’authentification Windows fonctionne et va largement à l’encontre du but recherché.

Vous ne pouvez pas non plus créer simplement le même nom d'utilisateur avec le même mot de passe dans votre propre domaine et vous attendre à ce que cela fonctionne comme par magie. Le nom de domaine fait toujours partie de la validation - votre machine doit appartenir au domaine ou le domaine sur lequel se trouve votre machine doit être approuvé par le domaine de l'école.

La seule solution que je connaisse concerne SSMS, et c'est le runas /netonlytruc décrit dans cette réponse . Cela trompe Windows en lançant SSMS sous le nom de connexion que vous spécifiez, plutôt que le vôtre (vous ne pouvez pas le définir dans la boîte de dialogue Propriétés de connexion de SSMS, vous devez également lancer SSMS à partir de la ligne de commande ou d'un raccourci):

runas /netonly /user:domain\username "C:\path_to\ssms.exe"

Cela vous demandera votre mot de passe dans le domaine distant. Cela ressemblera à utiliser vos informations d'identification Windows locales, mais ce n'est pas le cas .

Il est possible que cela fonctionne également avec Visual Studio, mais je ne le sais vraiment pas.

Donc, vos options sont:

  • avoir l'université vous permettre de joindre votre machine au domaine
  • demandez à l'université d'ajouter votre domaine en tant que domaine approuvé
  • avoir une boîte de saut à l'intérieur du VPN qui vous permet de RDP et utiliser des outils se connectant directement à la machine SQL Server
  • utiliser l'authentification SQL
  • essayez le runas /netonlytruc avec Visual Studio
  • juste utiliser le runas /netonlytruc avec SSMS
Aaron Bertrand
la source
La runaschose ne fonctionne avec Visual Studio.
Daniel Hutmacher
Existe-t-il un moyen d'imiter ce comportement sans l'invite de commande?
Gilles Lesire
1
@ Gilles vous pouvez créer un fichier de commandes et double-cliquer dessus, ou vous pouvez utiliser cette chaîne et créer un raccourci peut
Aaron Bertrand
103

Il y a une autre façon, que j'utilise maintenant de préférence à la runas /netonlyméthode.

Vous pouvez ajouter les informations d'identification à votre profil dans Windows à l'aide du gestionnaire des informations d'identification disponible dans le panneau de configuration de Windows.

  1. Open Credential Manager
  2. Cliquez sur "Ajouter un identifiant Windows"
  3. Remplissez le champ "adresse Internet ou réseau" avec le nom et le numéro de port de l'instance SQL pour laquelle vous souhaitez stocker les informations d'identification.

    Exemple: UniServer:1433(1433 est le port par défaut, vous aurez peut-être besoin d'un autre port, en particulier si vous vous connectez à une instance nommée)

  4. Remplissez le "Nom d'utilisateur" (n'oubliez pas d'inclure le domaine, par exemple MYDOMAIN\MYUSER)
  5. Remplir le "mot de passe"
  6. Cliquez sur OK

Si le nom du serveur, le port et les informations de connexion sont corrects, vous devriez maintenant pouvoir utiliser l'authentification Windows à partir de la plupart des outils clients, SSMS, Excel, etc. Ils utiliseront tous les informations d'identification stockées.

Conseil: Parfois, vous devez utiliser le FQN pour le serveur lors de l'ajout des informations d'identification. Par exemple UniServer.UniDomain.org:1433, tout dépend des spécificités de votre réseau.

Voici une rapide démonstration de la méthode: http://youtu.be/WiVBPsqB9b4

Il s'agit d'une capture d'écran de ma tentative (et d'échec) de me connecter à un serveur SQL Server s'exécutant sur une machine virtuelle depuis mon bureau, puis d'ajouter les informations d'identification requises et de réessayer - avec succès.

Conseil: utilisez la commande "cmdkey / add" pour créer et mettre à jour les informations d'identification stockées dans le script.

Monsieur Magoo
la source
Intéressant! Cela semble dépendre de la manière dont votre ordinateur client pense que la machine distante est appelée plutôt que de ce qu'elle pourrait être en réalité. J'ai mis une entrée inventée ("verysillytest.mwardm") dans mon fichier hôte pour l'adresse IP (comme ceux d'entre nous qui accédons de l'extérieur des domaines ne le faisons pas) et ai configuré les informations d'identification sous le nom "verysillytest.mwardm: 1433 ". Je peux ensuite me connecter avec plaisir (à partir d'une petite application appelée Query Express) en utilisant soit le nom d'hôte, soit l'adresse IP.
Mwardm
@ mwardm oui, c'est pourquoi je recommande d'utiliser ping ou nslookup, car cela vous indiquera le nom exactement comme vous devez l'utiliser, y compris les détails majuscules / minuscules.
Monsieur Magoo
Ah, bien "ping-a" ne m'a rien donné et nslookup n'a pas (immédiatement) fonctionné parce que je n'utilisais pas les serveurs DNS du domaine. Ne vous inquiétez pas, je préfère en réalité la flexibilité de simplement connaître l'adresse IP (et l'identifiant) et de pouvoir créer mon propre nom!
Mwardm
2
Génial, ça marche! Je me demande simplement - est-ce que cela est supposé fonctionner comme ça ou est-ce un bogue ou un échec de la conception du côté de SQL Server? Microsoft ou des personnes de Microsoft annoncent partout que vous devez avoir un ordinateur connecté à un domaine. Sinon, il est impossible de se connecter à SQL Server qui est configuré pour accepter uniquement les informations d'identification du domaine.
Dawid Ferenczy Rogožan
BTW, je dirais que cette réponse devrait être marquée comme acceptée, car elle semble être une vraie solution et l'autre réponse ressemble davantage à une solution de contournement.
Dawid Ferenczy Rogožan