2012-02-16 29 views
19

Trước đây cho tất cả các ứng dụng asp.net của chúng tôi, chúng tôi đã sử dụng một người dùng sysadmin trong SQL Server để kết nối và thêm/cập nhật/xóa/nhận dữ liệu. Quản trị viên SQL của chúng tôi muốn xóa tài khoản đó và tạo Tài khoản miền để chúng tôi có thể sử dụng tài khoản đó trong các ứng dụng .net của chúng tôi.Chuỗi kết nối bằng cách sử dụng một người dùng tên miền?

chuỗi kết nối hiện tại của tôi là:

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

sẽ là chuỗi kết nối được gì cho việc sử dụng một tài khoản tên miền?

tôi đã cố gắng:

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

và nó không hoạt động.

Có cách nào khác để kết nối với SQL Server bằng tài khoản miền không?

Cảm ơn sự giúp đỡ của bạn.

+1

** Lưu ý **: Bạn không thể vượt qua tên người dùng và mật khẩu Windows trong chuỗi kết nối để đăng nhập vào SQL Server như chi tiết [ở đây] (https: // stackoverflow.com/questions/830929/database-windows-authentication-username-password). Nó phải là một đăng nhập người dùng SQL. – RBT

Trả lời

27

Có một cái nhìn tại connectionstrings.com cho mọi biến thể - một nguồn lực rất tiện dụng tôi sử dụng tất cả các thời gian

Cụ thể, bạn muốn định dạng này:

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

này, tất nhiên, chỉ có tác dụng nếu tài khoản miền được đề cập là tài khoản đang mở kết nối.

Không có cách nào dễ dàng để kết nối với thông tin đăng nhập tùy ý - nhưng bạn có thể impersonate người dùng được đề cập và sau đó kết nối.

Điều này có thể hơi đau. Một cách khác nếu người dùng trên mạng cục bộ (hoặc bạn kiểm soát cấu hình trình duyệt của họ) là sử dụng xác thực Kerberos trên trang web của bạn. Các trang sẽ được phục vụ với quyền của người dùng có liên quan - sau đó bạn có thể sử dụng chuỗi kết nối ở trên và IIS sẽ kết nối với Db với thông tin đăng nhập thích hợp cho từng người dùng. Điều này đặc biệt hữu ích từ quan điểm bảo mật khi Db có thể kiểm tra trên cơ sở mỗi người dùng và quyền có thể là cho mỗi người dùng/hàng/cột thay vì chỉ cho mỗi ứng dụng.

+0

Cảm ơn bạn đã phản hồi. Bây giờ một câu hỏi khác xuất hiện. Vì vậy, để sử dụng một tài khoản miền trong chuỗi kết nối tôi sẽ phải đăng nhập vào Windows/PC bằng cách sử dụng tài khoản miền là cách duy nhất nó có thể làm việc? –

+2

Đó không phải là người bạn đã đăng nhập với tư cách là trang web đang chạy. Ví dụ: Đi vào hồ bơi ứng dụng và thay đổi người dùng trong đó để được (nói) MyDomain \ MyWeb.Service - sau đó cấp quyền cho cơ sở dữ liệu cho người dùng đó. Đây là cách đơn giản nhất để làm điều đó - nhưng tất cả các kết nối sẽ được thực hiện cho DB như một người dùng đó. Nếu bạn muốn các kết nối được cụ thể cho các quyền của mỗi người dùng (ví dụ cho PCI tuân thủ), bạn cần phải xem xét thông qua các thông tin xác thực - hoặc bằng cách chọn mô hình auth thích hợp hoặc sử dụng mạo danh – Basic

+0

Awesome. cảm ơn rất nhiều về sự giúp đỡ của bạn. –

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

Ở trên là chuỗi kết nối để xác thực Windows với phiên bản SQL Server của bạn.

4

Vâng, thử điều này:

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

này quy định rằng bạn muốn sử dụng tích hợp Windows xác thực mà bạn vẫn cố gắng sử dụng máy chủ xác thực SQL (mặc dù tên người dùng bạn cho vào trông giống như Windows miền/user SQL server tài khoản vẫn đối xử với nó như thẩm định chuẩn SQL Server)

Ngoài ra hãy xem tại connectionstrings.com

+0

Cảm ơn nhiều vì đã trả lời. –

3

Sử dụng tích hợp bảo mật:

Integrated Security=SSPI 

Trong đó có một biến thể:

Trusted_Connection=True 

Các chuỗi kết nối khác nhau (cho một loạt các cơ sở dữ liệu) có thể được tìm thấy trên connectionstrings.com.

Với cả hai thứ này, bạn cần đảm bảo rằng ứng dụng đang chạy trong tài khoản bạn cần đăng nhập.

2

Nếu bạn muốn sử dụng tài khoản người dùng khác thì người dùng đã đăng nhập bạn có hai tùy chọn.

Lựa chọn 1

Bạn có thể thêm người dùng ứng dụng hồ bơi Identity.

Để thực hiện điều này, hãy tiến hành cài đặt hồ bơi ứng dụng và chỉnh sửa danh tính để sử dụng người dùng bạn muốn.

Lựa chọn 2

Thêm này trong Web config:

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

Và sử dụng kết nối stirng này:

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

Để biết thêm chi tiết Xem: https://msdn.microsoft.com/en-us/library/134ec8tc.aspx

Cũng tìm thấy một bài viết tốt của mình https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net

Các vấn đề liên quan