2010-03-12 40 views
11

Tôi có cơ sở dữ liệu và trang web có xác thực biểu mẫu. Nó hoạt động tốt với VS2008. Lần này, tôi đang sử dụng "Trusted_connection = True". Nhưng khi nó được mở từ bên ngoài hoặc trực tiếp từ trình duyệt thì tôi nhận được lỗi "Đăng nhập không thành công cho người dùng 'NT AUTHORITY \ ANONYMOUS LOGON'."cách tốt nhất để kết nối máy chủ sql (xác thực Windows vs xác thực máy chủ SQL) cho ứng dụng asp.net

Tôi biết điều này là do sự cho phép. Máy chủ SQL dựa trên xác thực cửa sổ.

  • Cách tiếp cận tốt nhất để quản lý người dùng kết nối SQL Server là gì?
  • Tôi có nên bật xác thực máy chủ SQL không?

Hãy cho tôi biết phải làm gì để nó làm cho cảm giác sản xuất và sẽ không có bất kỳ vấn đề nào trong quá trình triển khai.

Lưu ý: Máy chủ SQL được cài đặt trên máy chủ miền.

+0

** phiên bản nào của SQL Server? 2000, 2005, 2008 ?? –

+0

Máy chủ Sql 2005 – Brij

Trả lời

10

Xác thực trang web không liên quan đến xác thực giữa ASP và SQL. Các 'hình thức xác thực' thực sự không phải là một hình thức xác thực thực sự, chỉ là một vai trò và thành viên cho các ứng dụng ASP.Net, không liên quan đến cơ sở hạ tầng bảo mật.

Khi bạn chạy trang web của mình từ Visual Studio, bạn sẽ khởi chạy máy chủ web Visual Studio trong tài khoản của riêng bạn và máy chủ web này sẽ xác thực với SQL Server bằng NTLM/Kerberos như bạn, vì đang chạy dưới thông tin đăng nhập của bạn.

Khi bạn truy cập trang web từ trình duyệt, trang web của bạn đang chạy từ nhóm ứng dụng IIS với danh tính của nhóm ứng dụng đã nói, thường là người dùng cục bộ có tên IUSER _... Người dùng cục bộ này khi xác thực bằng SQL Máy chủ sử dụng NTLM/Kerberos sẽ xác thực là người dùng ẩn danh, vì tài khoản cục bộ không có ý nghĩa trên máy/miền từ xa lưu trữ SQL Server.

Giải pháp là thay đổi nhận dạng nhóm ứng dụng thành người dùng có thể xác thực tốt với Máy chủ SQL. Đối với điều này, máy lưu trữ IIS phải được nối vào cùng một tên miền với máy chủ lưu trữ của SQL Server (hoặc tên miền tin cậy miền máy chủ lưu trữ SQL Server) và bản sắc của hồ bơi ứng dụng phải được thay đổi thành tài khoản từ miền này. Vì vậy, nếu máy SQL Server chạy trên một máy tính tham gia vào FOO miền, sau đó:

  • chắc chắn rằng máy IIS được gia nhập vào foo
  • tạo một người dùng miền FOO \ MyWebApp
  • thay đổi hồ bơi ứng dụng sắc để FOO \ MyWebApp
  • thêm một tên đăng nhập SQL cho FOO \ MyWebApp
  • cấp phép cần thiết trong SQL để FOO \ MyWebApp

Giải pháp thay thế sử dụng Xác thực SQL là không hợp lệ vì nhiều lý do (tiềm năng để hiển thị mật khẩu trong web.cấu hình, tiềm năng để lộ mật khẩu trong quá trình xác thực trên dây). Nếu máy chủ lưu trữ IIS không tham gia vào miền thì bạn có thể sử dụng tài khoản được nhân đôi (tài khoản cục bộ có cùng tên và mật khẩu trên cả máy chủ lưu trữ IIS và máy chủ lưu trữ SQL) nhưng điều đó cũng thiếu sót: không thể hoạt động với Kerberos, mật khẩu tài khoản có được giữ đồng bộ trên hai máy chủ, vv ..

2

Một cách tiếp cận là tạo tài khoản dịch vụ cho ứng dụng để sử dụng. Bạn tạo tài khoản trong Active Directory hoặc tương tự. Trong IIS, đặt nhóm ứng dụng để hoạt động trong tài khoản dịch vụ đó. Trong SQL Server, cấp quyền cho tài khoản dịch vụ, trực tiếp hoặc bằng cách đặt tài khoản dịch vụ trong một vai trò.

Đây là một bài viết về how to do that.

2

Tạo tài khoản dịch vụ được quản lý trong miền nơi máy chủ SQL và máy chủ Web (IIS) thuộc về hoặc tin cậy. Sau đó chạy hồ bơi ứng dụng của máy chủ web trên tài khoản dịch vụ được quản lý. Tạo đăng nhập SQL Server bằng tài khoản dịch vụ được quản lý. Đọc bài Technet sau đây để biết thêm thông tin về cách tạo tài khoản dịch vụ được quản lý;

http://technet.microsoft.com/en-us/library/dd548356(v=ws.10).aspx

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