2009-04-09 43 views
14

Tôi có một trang web chạy trên IIS trên máy chủ cục bộ của mình. Trang web này có bảo mật thư mục được đặt để chỉ cho phép Xác thực Windows tích hợp. Nó là một phần của mạng nội bộ và cần xác thực bằng tài khoản miền của chúng tôi.Xác thực Windows Tích hợp với IIS, Firefox và SQL Server

Sau đó tôi kết nối với Máy chủ SQL với Bảo mật tích hợp = SSPI trong chuỗi kết nối.

Điều này hoạt động tốt với Microsoft Internet Explorer, nó tự động xác thực tôi khi tôi đăng nhập vào miền và tôi có thể thấy rằng logon_user là tài khoản miền của tôi và chuỗi kết nối SQL Server hoạt động tốt.

Tuy nhiên, khi tôi đăng nhập bằng Firefox, mọi thứ khác nhau. Trước tiên, tôi được nhắc xác thực, đó là tốt và chính xác như Firefox không được cấu hình để tin tưởng localhost đủ để tự động gửi thông tin đăng nhập (và thực sự tôi biết làm thế nào để giới thiệu sự tin tưởng này, đây không phải là vấn đề). Sau đó tôi đăng nhập, một lần nữa là tốt, miễn là tôi nhập chi tiết tài khoản miền mọi thứ đều ổn. Thật vậy, một tuyên bố gỡ lỗi hoặc hai cho thấy rằng logon_user vẫn là tài khoản miền của tôi và mọi thứ đều ổn.

Tuy nhiên, khi tôi đến để kết nối với SQL Server (mà đang chạy trên một hộp máy chủ từ xa, mà tài khoản tên miền của tôi có đặc quyền quản trị hệ thống đầy đủ), tôi nhận được lỗi sau:

Microsoft OLE DB Provider for SQL Server (0x80040E4D) 
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

Điều này cho thấy với tôi rằng một cái gì đó là sai trong ngăn xếp xác thực, vì một số lý do, IIS không chạy như tài khoản xác thực khi tôi xác thực bằng cách sử dụng xác thực cửa sổ từ firefox.

Điều này cũng hoạt động tốt khi sử dụng Google Chrome.

Mọi đề xuất?

+0

Bạn có đang chạy SQL và IIS trên cùng một máy không? – Tomalak

+0

Không, SQL Server nằm trên máy chủ bảo mật từ xa. – THEMike

Trả lời

27

AS noted bởi Pontus Gagge, IIS cần chuyển vé Kerberos tới SQL Server. Đó là đủ để đầu Google-fu của tôi đi đúng hướng.

Firefox hỗ trợ Kerberos, nhưng, bạn phải cho biết tên miền nào cũng tin cậy để gửi mã thông báo Kerberos.

  1. Mở Firefox
  2. Trong địa chỉ kiểu thanh: about: config
  3. Firefox3.x và sau đó đòi hỏi bạn phải đồng ý rằng bạn sẽ tiến hành một cách thận trọng.
  4. Sau khi tải trang cấu hình, trong các loại hộp lọc: network.negotiate-auth
  5. Sửa network.negotiate-auth.trusted-URI bằng cách nhấp đúp hàng và nhập yourdomain.com
  6. Nhiều lĩnh vực có thể bổ sung bởi dấu phẩy phân chia ranh giới họ như yourdomain.com, yourotherdomain.com

Lưu ý: Đây làkhông giống như gbn 's solution mà chỉ cấu hình firefox để không nhắc bạn nhập chi tiết tài khoản tên miền trên logi n.

Ngoài ra, nếu bạn đã cố gắng xác thực thông qua ngăn xếp trong phiên Firefox hiện tại của mình, bạn sẽ cần phải khởi động lại Firefox để làm việc này.

+0

Để lưu nội dung, tôi tiếp tục gặp sự cố sau khi thực hiện các thay đổi này trong Phiên bản dành cho nhà phát triển Firefox bằng cách sử dụng http: // localhost làm miền. Tôi cũng phải làm giải pháp của gbn dưới đây để vượt qua thông báo "Đăng nhập thất bại ...". Đó là một sự kết hợp của việc thêm URI vào hai nơi mà cuối cùng đã làm việc. Tôi xác nhận rằng việc loại bỏ một hoặc khác gây ra vấn đề để trở lại. – PhilDearmore

+0

Xin lỗi, tôi đã nói quá sớm. Sau khi kiểm tra lại nó, nó chỉ ra cái duy nhất tôi cần thiết là network.automatic-ntlm-auth.trusted-uris. – PhilDearmore

5
  1. Mở Firefox
  2. Trong địa chỉ kiểu thanh: about: config
  3. Firefox3.x và sau đó đòi hỏi bạn phải đồng ý rằng bạn sẽ tiến hành một cách thận trọng.
  4. Sau khi tải trang cấu hình, trong các loại hộp lọc: network.automatic
  5. Sửa network.automatic-NTLM-auth.trusted-URI bằng cách nhấp đúp hàng và nhập http://www.replacewithyoursite.com
  6. Nhiều trang web có thể được bổ sung bởi dấu phẩy phân chia ranh giới họ như http://www.replacewithyoursite.com, http://www.replacewithyourintranetsite.com

tôi cũng sử dụng IETab add-on cho các trang web mạng nội bộ

+0

Tôi biết làm thế nào để làm điều này, tôi bỏ qua nó trong đi qua, đây không phải là một vấn đề. Thực tế là khi tôi đã xác thực, nó sẽ không vượt qua đó vào SQL Server là vấn đề. – THEMike

5

IIS cần phải vượt qua một vé Kerberos để SQL server cho kịch bản này để làm việc. MSIE đang lấy vé phiên máy trạm, trong khi Firefox đang đàm phán xác thực riêng của mình (chứ không phải Kerberos).

Kiểm tra ví dụ: this dense blog post làm điểm khởi đầu để hiểu những gì cần thiết. Tôi không chắc chắn nếu FF hỗ trợ MS-Kerberos.

Hãy lưu ý rằng thậm chí nhận được chứng thực MSIE-> IIS-> SQL Server có thể phức tạp nếu bạn có phiên bản sai hoặc cấu hình tin cậy ...

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