2012-02-16 13 views
19

Wcześniej dla wszystkich naszych aplikacji asp.net używaliśmy użytkownika sysadmin w SQL Server do łączenia i dodawania/aktualizowania/usuwania/pobierania danych. Nasz administrator SQL chce usunąć to konto i utworzyć konto domeny, abyśmy mogli używać tego konta w naszych aplikacjach .net.Ciąg połączenia za pomocą użytkownika domeny?

Mój obecny ciąg połączenia jest:

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

Co ciąg połączenia się za pomocą konta domeny?

Próbowałem:

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

i to nie działa.

Czy istnieje inny sposób łączenia się z serwerem SQL przy użyciu konta domeny?

Dziękuję za pomoc.

+1

** ** Uwaga: Nie można przekazać nazwę użytkownika i hasło systemu Windows w ciągu połączenia, aby zalogować się do programu SQL Server, jak opisano [tutaj] (https: // stackoverflow.com/questions/830929/database-windows-authentication-username-password). Musi to być login użytkownika SQL. – RBT

Odpowiedz

27

Wystarczy popatrzeć na connectionstrings.com dla każdej możliwej odmianie - bardzo poręczny zasobów używam cały czas

Konkretnie, chcesz tego formatu:

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

To, oczywiście, działa tylko wtedy, gdy Konto domeny, o którym mowa, to ten, który otwiera połączenie.

Nie ma łatwego sposobu na połączenie z arbitralnymi danymi uwierzytelniającymi - ale możesz impersonate danego użytkownika, a następnie połączyć się.

To może być trochę uciążliwe. Alternatywą, jeśli użytkownicy są w sieci lokalnej (lub kontrolujesz ich konfigurację przeglądarki) jest użycie uwierzytelniania Kerberos w twojej witrynie. Strony będą dostarczane z odpowiednimi uprawnieniami użytkownika - możesz użyć powyższego ciągu połączenia, a IIS połączy się z Db z odpowiednimi danymi uwierzytelniającymi dla każdego użytkownika. Jest to szczególnie przydatne z punktu widzenia bezpieczeństwa, ponieważ Db może przeprowadzać inspekcje dla poszczególnych użytkowników, a uprawnienia mogą być ustawione na użytkownika/wiersz/kolumnę zamiast tylko na aplikację.

+0

Dzięki za odpowiedź. Teraz pojawiają się kolejne pytania. Więc aby użyć konta domeny w łańcuchu połączenia, musiałbym być zalogowany do systemu Windows/PC przy użyciu konta domeny jest to, że jedyny sposób może to działać? –

+2

Nie jest tym, kim jesteś zalogowany, ponieważ to strona jest uruchomiona jako. Np. Przejdź do puli aplikacji i zmień użytkownika, aby był (powiedzmy) MyDomain \ MyWeb.Service - następnie udziel uprawnienia dla bazy danych temu użytkownikowi. Jest to najprostszy sposób, aby to zrobić - ale wszystkie połączenia zostaną wykonane z bazą danych jako jeden użytkownik. Jeśli chcesz, aby połączenia były specyficzne dla uprawnień każdego użytkownika (np. Dla zgodności z PCI), musisz przejrzeć przekazywanie poświadczeń - wybierając odpowiedni model autoryzacji lub podszywając się pod inny numer: – Basic

+0

Awesome. Bardzo dziękuję za pomoc. –

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

Powyższe jest ciągiem połączenia dla uwierzytelniania systemu Windows z instancją serwera SQL.

4

Tak, spróbuj tego:

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

ten określa, że ​​chcesz używać zintegrowanego uwierzytelniania systemu Windows, w którym wciąż próbuje użyć uwierzytelniania serwera SQL (choć nazwa wprowadzona wyglądało domenie Windows/użytkownika konto serwera SQL wciąż traktuje go jako standardowy uwierzytelniania SQL Server)

wziąć również do obejrzenia connectionstrings.com

+0

Dziękuję za odpowiedź. –

3

Zastosowanie zintegrowanego bezpieczeństwa:

Integrated Security=SSPI 

który wariant:

Trusted_Connection=True 

Poszczególne ciągi połączeń (dla różnych baz danych) można znaleźć na connectionstrings.com.

W obu przypadkach musisz upewnić się, że aplikacja działa pod kontem, z którym musisz się zalogować.

2

Jeśli chcesz użyć innego konta użytkownika, to zalogowany użytkownik ma dwie opcje.

Wariant 1

Możesz dodać użytkownika do puli aplikacji Identity.

W tym celu przejdź do ustawienia góry puli aplikacji i zmień tożsamość, aby użyć żądanego użytkownika.

Wariant 2

Dodaj ten w Web config:

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

i używać tej stirng połączenia:

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

po więcej szczegółów patrz: https://msdn.microsoft.com/en-us/library/134ec8tc.aspx

Także kolejny dobry artykuł jej https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net

Powiązane problemy