Chaîne de connexion utilisant l'authentification Windows

134

Je crée un site Web, mais dans la base de données, j'utilise l'authentification Windows.

Je sais que vous utilisez ceci pour l'authentification SQL

<connectionStrings> 
    <add name="NorthwindContex" 
       connectionString="data source=localhost;
       initial catalog=northwind;persist security info=True; 
       user id=sa;password=P@ssw0rd" 
       providerName="System.Data.SqlClient" /> 
</connectionStrings>

Comment puis-je modifier cela pour fonctionner avec l'authentification Windows?

MDC
la source

Réponses:

192

Remplacez le nom d'utilisateur et le mot de passe par Integrated Security=SSPI;

La chaîne de connexion doit donc être

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 
têtes5150
la source
1
Je sais que vous pouvez définir un utilisateur AD spécifique sur le pool d'applications (application Web). pouvez-vous faire la même chose pour l'application Windows?
user384080
6
Persist Security Infon'est probablement pas nécessaire: stackoverflow.com/a/2010059/1869660
Sphinxxx
@ heads5150: Est-il possible qu'il n'y ait pas de chaînes de connexion dans mon projet? je manque quelque chose. J'ai cherché dans toute ma solution pour trouver une chaîne de connexion comme ci-dessus. je n'ai pas pu en trouver. Celui que j'ai fondé a été commenté dans la version Web et la configuration Web. J'utilise vs express 2013 avec la base de données locale.
Vini
19

Pour la solution correcte après plusieurs heures:

  1. Ouvrez le fichier de configuration
  2. Modifiez la chaîne de connexion avec ce qui suit

<add name="umbracoDbDSN" connectionString="data source=YOUR_SERVER_NAME;database=nrc;Integrated Security=SSPI;persist security info=True;" providerName="System.Data.SqlClient" />

  1. Modifiez YOUR_SERVER_NAME avec le nom de votre serveur actuel et enregistrez-le
  2. Ouvrez le gestionnaire IIS
  3. Recherchez le nom du pool d'applications utilisé par le site Web ou l'application Web
  4. Cliquez avec le bouton droit et choisissez Paramètres avancés
  5. Dans Paramètres avancés sous Modèle de processus, changez l' identité en compte personnalisé et ajoutez les détails de votre administrateur de serveur, veuillez consulter les images ci-jointes:

entrez la description de l'image ici

J'espère que cela aidera.

Ahmed Na.
la source
2
Cette solution a fonctionné pour moi, mais je me demandais comment ce changement d'identité affecte-t-il le comportement de l'application, en termes de sécurité?
CesarB
Toutes les actions effectuées par le processus seront exécutées avec les autorisations / privilèges de ce compte. N'accordez pas plus d'autorisations que nécessaire. Un compte de service dédié serait souhaitable. Je vous recommande de consulter également DISA IIS et Windows Server STIG: public.cyber.mil/stigs/downloads
duct_tape_coder
12

Pour se connecter à une base de données de serveur SQL via l'authentification Windows, il faut essentiellement quel serveur vous souhaitez vous connecter, quel est le nom de votre base de données, les informations de sécurité intégrée et le nom du fournisseur.

Fondamentalement, cela fonctionne:

<connectionStrings>      
<add name="MyConnectionString"
         connectionString="data source=ServerName;
   Initial Catalog=DatabaseName;Integrated Security=True;"
         providerName="System.Data.SqlClient" />
</connectionStrings> 

Réglage intégré de la sécurité sur le terrain vrais moyens essentiellement que vous souhaitez atteindre la base de données via l' authentification Windows, si vous définissez ce champ fausse authentification Windows ne fonctionnera pas.

Il fonctionne également différemment selon le fournisseur que vous utilisez.

  • SqlClient both Integrated Security = true; ou IntegratedSecurity = SSPI; travaille.

  • OleDb c'est Integrated Security = SSPI;

  • Odbc c'est Trusted_Connection = yes;
  • OracleClient c'est la sécurité intégrée = oui;

Integrated Security = true lève une exception lorsqu'il est utilisé avec le fournisseur OleDb.

nzrytmn
la source
6

Ceci est plus court et fonctionne

<connectionStrings>      
<add name="DBConnection"
             connectionString="data source=SERVER\INSTANCE;
       Initial Catalog=MyDB;Integrated Security=SSPI;"
             providerName="System.Data.SqlClient" />
</connectionStrings> 

Les informations de sécurité persistantes ne sont pas nécessaires

Carlos E
la source