2012-02-16 5 views
19

Precedentemente per tutte le nostre applicazioni asp.net abbiamo utilizzato un utente sysadmin in SQL Server per connettere e aggiungere/aggiornare/eliminare/ottenere dati. Il nostro amministratore SQL desidera eliminare tale account e creare un account di dominio in modo da poter utilizzare tale account all'interno delle nostre applicazioni .net.Stringa di connessione che utilizza un utente di dominio?

mia stringa di connessione corrente è:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=user;Password=password" providerName="System.Data.SqlClient" 

Quale sarebbe la stringa di connessione sia per l'utilizzo di un account di dominio?

ho provato:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=domain\user;Password=password" providerName="System.Data.SqlClient" 

e non funziona.

C'è un modo diverso per connettersi a SQL Server utilizzando un account di dominio?

Grazie per il vostro aiuto.

+1

** Nota **: Non è possibile passare il nome utente e la password di Windows nella stringa di connessione per accedere a SQL Server come dettagliato [qui] (https: // stackoverflow.com/questions/830929/database-windows-authentication-username-password). Deve essere un accesso utente SQL. – RBT

risposta

27

Dai un'occhiata alla connectionstrings.com per ogni possibile variante - una risorsa molto utile che uso per tutto il tempo

In particolare, si vuole questo formato:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

Questo, naturalmente, funziona solo se il l'account di dominio in questione è quello che apre la connessione.

Non c'è un modo semplice per connettersi con credenziali arbitrarie - ma è possibile effettuare il impersonate utente in questione e quindi connettersi.

Questo può essere un po 'un dolore. Un'alternativa se gli utenti si trovano sulla rete locale (o controlli la configurazione del browser) utilizza l'autenticazione Kerberos sul tuo sito. Le pagine verranno pubblicate con le autorizzazioni dell'utente pertinente, quindi sarà possibile utilizzare la stringa di connessione sopra e IIS si connetterà al Db con le credenziali appropriate per ciascun utente. Ciò è particolarmente utile dal punto di vista della sicurezza poiché il Db è in grado di eseguire il controllo su base per utente e le autorizzazioni possono essere per utente/riga/colonna anziché solo per app.

+0

Grazie per la vostra risposta. Ora arrivano altre domande. Quindi, per utilizzare un account di dominio nella stringa di connessione, dovrei essere connesso a Windows/PC utilizzando l'account di dominio, è l'unico modo in cui può funzionare? –

+2

Non è chi sei loggato come, è a chi sta lavorando il sito web. Ad esempio, accedere al pool di applicazioni e modificare l'utente lì dentro (ad esempio) MyDomain \ MyWeb.Service, quindi concedere le autorizzazioni per il database a tale utente. Questo è il modo più semplice per farlo - ma tutte le connessioni saranno fatte al DB come quell'unico utente. Se si desidera che le connessioni siano specifiche per le autorizzazioni di ciascun utente (ad esempio per la conformità PCI), è necessario esaminare le credenziali selezionando il modello di autorizzazione appropriato o utilizzando la rappresentazione – Basic

+0

Impressionante. Grazie mille per il tuo aiuto. –

2
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

Quanto sopra è una stringa di connessione per l'autenticazione di Windows contro l'istanza di SQL Server.

4

Sì, provate questo:

Data Source=server;Initial Catalog=database;Integrated Security=SSPI; 

Questo specifica che si desidera utilizzare l'autenticazione integrata di Windows in cui si stava ancora cercando di utilizzare l'autenticazione di SQL Server (anche se il nome utente inserito sembrava un dominio Windows/utente SQL server conto considera ancora come l'autenticazione di SQL Server di serie)

prendere anche uno sguardo al connectionstrings.com

+0

Grazie mille per la risposta. –

3

utilizzare la protezione integrata:

Integrated Security=SSPI 

Che ha una variante:

Trusted_Connection=True 

Le diverse stringhe di connessione (per una varietà di basi di dati) si possono trovare sul connectionstrings.com.

Con entrambi questi è necessario assicurarsi che l'applicazione sia in esecuzione con l'account con cui è necessario accedere.

2

Se si desidera utilizzare un account utente diverso, l'utente che ha effettuato l'accesso ha due opzioni.

Opzione 1

È possibile aggiungere l'utente a Identità pool di applicazioni.

Per questo andare ad avanzare l'impostazione del pool di applicazioni e modificare l'identità per utilizzare l'utente desiderato.

Opzione 2

Aggiungere questo in config Web:

<identity impersonate="true" userName="Domain\User" password="Password" /> 

E utilizzare questa stirng collegamento:

<add name="Name" connectionString="Data source=SqlServer;Initial Catalog=DbName;Integrated security=True" providerName="System.Data.SqlClient"/> 

Per maggiori dettagli si veda: https://msdn.microsoft.com/en-us/library/134ec8tc.aspx

trovato anche un altro buon articolo sua https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net

Problemi correlati