189 votes

Chaîne de connexion utilisant l'authentification Windows

Je suis en train de créer un site web, mais dans la base de données j'utilise l'authentification Windows.

Je sais que vous l'utilisez 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 le modifier pour qu'il fonctionne avec l'authentification Windows ?

0 votes

Je ne suis pas sûr que vous vouliez parler d'un compte Windows générique à utiliser par plusieurs personnes.

260voto

heads5150 Points 3377

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

La chaîne de connexion devrait 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>

1 votes

Je sais que vous pouvez définir un utilisateur AD spécifique au pool d'applications (application web). Pouvez-vous faire la même chose pour l'application Windows ?

7 votes

Persist Security Info n'est probablement pas nécessaire : stackoverflow.com/a/2010059/1869660

0 votes

@heads5150 : Est-il possible qu'il n'y ait pas de chaîne de connexion dans mon projet ? Est-ce que j'ai manqué quelque chose. J'ai cherché dans toute ma solution pour trouver une chaîne de connexion comme ci-dessus. je n'en ai pas trouvé. Celle que j'ai trouvée était commentée dans la version web et la configuration web. J'utilise vs express 2013 avec une base de données locale.

36voto

nzrytmn Points 531

Pour se connecter à une base de données sql server via l'authentification Windows, il faut essentiellement connaître le serveur auquel vous voulez vous connecter, le nom de votre base de données, les informations de sécurité intégrée et le nom du fournisseur.

En gros, ça marche :

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

Réglage de Sécurité intégrée champ vrai signifie essentiellement que vous voulez accéder à la base de données via l'authentification Windows, si vous définissez ce champ faux L'authentification Windows ne fonctionnera pas.

Le fonctionnement est également différent selon le fournisseur que vous utilisez.

  • SqlClient les deux Sécurité intégrée=true ; o IntegratedSecurity=SSPI ; fonctionne.

  • OleDb c'est Sécurité intégrée=SSPI ;

  • Odbc c'est Trusted_Connection=yes ;

  • OracleClient c'est Sécurité intégrée = oui ;

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

30voto

Ahmed Na. Points 2665

Pour obtenir la bonne solution après plusieurs heures :

  1. Ouvrir le fichier de configuration
  2. Changez 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. Changez le VOTRE_SERVEUR_NAME avec le nom de votre serveur actuel et enregistrez
  2. Ouvrez le gestionnaire IIS
  3. Trouvez le nom du pool d'applications que le site Web ou l'application Web utilise.
  4. Cliquez avec le bouton droit de la souris et choisissez Paramètres avancés
  5. À partir des paramètres avancés sous Modèle de processus changer le Identité vers Compte personnalisé et ajoutez vos détails d'administrateur de serveur, veuillez voir les images jointes :

enter image description here

J'espère que cela vous aidera.

4 votes

Cette solution a fonctionné pour moi, mais je me demandais comment ce changement sur l'identité a un impact sur le comportement de l'application, en termes de sécurité ?

0 votes

Toutes les actions effectuées par le processus seront exécutées avec les permissions/privilèges de ce compte. N'accordez pas plus de permissions que nécessaire. Un compte de service dédié serait conseillé. Je vous recommande également de consulter les STIG DISA IIS et Windows Server : public.cyber.mil/stigs/downloads

0 votes

La solution fonctionne mais je voudrais juste ajouter que lorsque vous essayez de définir le compte personnalisé, le compte que vous essayez d'ajouter doit déjà être présent dans le Panneau de configuration > Comptes d'utilisateurs sinon vous obtiendrez une erreur (Si vous essayez d'ajouter un compte qui n'est pas présent dans le Panneau de configuration > Comptes d'utilisateurs). Ajoutez donc d'abord le compte dans Comptes d'utilisateurs, puis vous pourrez le définir dans Identité de l'application.

12voto

Crying Freeman Points 857

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> 

Persister les informations de sécurité n'est pas nécessaire

2voto

Vikas Lalwani Points 523

Si quelqu'un vient chercher asp.net core, nous devrons ajouter la chaîne de connexion dans appsettings.json.

 {
"ConnectionStrings": {
   "DefaultConnection": "Server=SQLServer\\Instance;Database=MYDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

Source : ajouter l'authentification Windows chaîne de connexion du serveur sql

0 votes

TrustServerCertificate=true également si vous obtenez "Une connexion a été établie avec succès avec le serveur, mais une erreur s'est produite pendant le processus de connexion. (fournisseur : SSL Provider, error : 0 - La chaîne de certificats a été émise par une autorité qui n'est pas fiable.)" pour Windows Login dans .NET Core 6

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X