Stringa di connessione mediante l'autenticazione di Windows


134

Sto creando un sito Web, ma nel database utilizzo l'autenticazione di Windows.

So che lo usi per l'autenticazione 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>

Come posso modificarlo per funzionare con l'autenticazione di Windows?

Risposte:


192

Sostituisci il nome utente e la password con Integrated Security=SSPI;

Quindi la stringa di connessione dovrebbe essere

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 

1
so che puoi impostare un utente AD specifico per il pool di app (app Web). puoi fare lo stesso per l'app di Windows?
user384080,

6
Persist Security Infoè probabilmente non necessario: stackoverflow.com/a/2010059/1869660
Sphinxxx

@ heads5150: è possibile che non ci siano stringhe di connessione nel mio progetto? mi sto perdendo qualcosa. ho cercato in tutta la mia soluzione per trovare una stringa di connessione come sopra. non ne ho trovato nessuno. Quello che ho fondato è stato commentato nella versione web e nella configurazione web. Sto usando vs express 2013 con db locale.
Vini,

19

Per la soluzione corretta dopo molte ore:

  1. Apri il file di configurazione
  2. Modificare la stringa di connessione con quanto segue

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

  1. Cambia YOUR_SERVER_NAME con il nome del tuo server attuale e salva
  2. Apri Gestione IIS
  3. Trova il nome del pool di applicazioni utilizzato dal sito Web o dall'applicazione Web
  4. Fare clic con il tasto destro e selezionare Impostazioni avanzate
  5. Da Impostazioni avanzate in Modello di processo cambia l' identità in Account personalizzato e aggiungi i dettagli dell'amministratore del server, vedi le immagini allegate:

inserisci qui la descrizione dell'immagine

Spero che questo possa aiutare.


2
Questa soluzione ha funzionato per me, ma mi chiedevo in che modo questo cambiamento sull'identità influisce sul comportamento dell'applicazione, in termini di sicurezza?
CesarB,

Tutte le azioni eseguite dal processo verranno eseguite con le autorizzazioni / i privilegi di tale account. Non concedere più autorizzazioni del necessario. Un account di servizio dedicato sarebbe consigliabile. Consiglierei di controllare DISA IIS e Windows Server STIG: public.cyber.mil/stigs/downloads
duct_tape_coder

12

Per connettersi a un database SQL Server tramite l'autenticazione di Windows, in pratica è necessario quale server si desidera connettere, qual è il nome del database, le informazioni sulla sicurezza integrata e il nome del provider.

Fondamentalmente funziona:

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

L'impostazione del campo Sicurezza integrata su true significa sostanzialmente che si desidera raggiungere il database tramite l'autenticazione di Windows, se si imposta questo campo l' autenticazione di Windows falsa non funzionerà.

Funziona anche in modo diverso a seconda del provider che stai utilizzando.

  • SqlClient entrambi Integrated Security = true; o IntegratedSecurity = SSPI; sta lavorando.

  • OleDb è Integrated Security = SSPI;

  • Odbc è Trusted_Connection = yes;
  • OracleClient è Integrated Security = yes;

Sicurezza integrata = true genera un'eccezione se utilizzata con il provider OleDb.


6

Questo è più corto e funziona

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

Informazioni sulla sicurezza persistente non necessarie

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.