ApplicationPoolIdentity IIS 7.5 đến SQL Server 2008 R2 không hoạt động


11

Tôi có một kịch bản kiểm tra ASP.NET nhỏ mở kết nối tới cơ sở dữ liệu SQL Server trên một máy khác trong miền. Nó không hoạt động trong mọi trường hợp.

Thiết lập:

IIS 7.5 trong W2K8R2 đang cố gắng kết nối với phiên bản SQL Server 2008 R2 từ xa. Tất cả các máy nằm trong cùng một miền.

Sử dụng ApplicationPoolIdentity cho trang web, nó không thể kết nối với SQL Server bằng cách sau:

Đăng nhập thất bại cho người dùng 'NT AUTHORITY \ ANONYMOUS LOGON'. Mô tả: Một ngoại lệ chưa được xử lý đã xảy ra trong quá trình thực hiện yêu cầu web hiện tại. Vui lòng xem lại dấu vết ngăn xếp để biết thêm thông tin về lỗi và nơi xuất phát trong mã.

Chi tiết ngoại lệ: System.Data.SqlClient.SqlException: Đăng nhập thất bại cho người dùng 'NT AUTHORITY \ ANONYMOUS LOGON'.

Tuy nhiên, nếu tôi chuyển Nhận dạng mô hình quy trình sang DỊCH VỤ MẠNG hoặc tài khoản miền của tôi, kết nối cơ sở dữ liệu thành công.

Tôi đã cấp quyền truy cập \ $ trong SQL Server.

Tôi không thực hiện bất kỳ loại xác thực nào trên trang web, nó chỉ là một tập lệnh đơn giản để mở một kết nối đến cơ sở dữ liệu để đảm bảo nó hoạt động.

Tôi đã bật Xác thực ẩn danh và đặt để sử dụng danh tính nhóm Ứng dụng.

Làm thế nào để tôi thực hiện công việc này? Tại sao ApplicationPoolIdentity đang cố gắng sử dụng ANONYMOUS LOGON? Tốt hơn nữa, làm cách nào để làm cho nó ngừng sử dụng đăng nhập ẩn danh?


1
Bạn luôn có thể đặt danh tính AppPool là DỊCH VỤ MẠNG.
JohnThePro

Câu trả lời:


4

Tôi đã có cùng một vấn đề là tốt. Theo trang này , ApplicationPoolIdentity có nghĩa vụ truy cập tài nguyên mạng dưới dạng tài khoản máy (DOMAIN \ COMPUTERNAME $), nhưng nó đã sử dụng NT AUTHORITY \ ANONYMOUS LOGON để truy cập máy chủ SQL thay thế.

Tôi đã có thể sử dụng hotfix này để ApplicationPoolIdentity hoạt động như tài liệu nói. Hotfix này không mô tả cụ thể một giải pháp để truy cập tài nguyên mạng là NT AUTHORITY \ ANONYMOUS LOGON, nhưng nó liên quan đến việc thay đổi mật khẩu máy tính.

Chuỗi stackoverflow này đã giúp tôi tìm giải pháp này:

Các mẹo hữu ích khác để gỡ lỗi nhận dạng ASP.NET và danh tính SQL

Vì auth tích hợp SQL có liên quan đến danh tính luồng, nên có thể xem danh tính người dùng của bạn, danh tính luồng (thay đổi tùy theo mạo danh) và đăng nhập máy chủ SQL. Đoạn mã ASPX này hiển thị cả ba:

<%@ Import Namespace="System.Security.Principal" %>

<div>ASP.NET Request User identity: <%= User.Identity.Name %></div>
<div>Current thread/process WindowsIdentity: <%= WindowsIdentity.GetCurrent(false).Name %></div>
<asp:SqlDataSource ID="CurrentUserData" runat="server" ConnectionString="<%$ ConnectionStrings:ConnID %>"
           SelectCommand="select SYSTEM_USER" />
<asp:DetailsView DataSourceID="CurrentUserData" runat="server" />

2

Tôi đã có vấn đề chính xác cùng. Tôi nhổ tóc trong vài giờ và cuối cùng khởi động lại máy. Vấn đề đã biến mất! Lưu ý rằng khởi động lại IIS thông qua iisreset DID KHÔNG giải quyết vấn đề. Nó chỉ biến mất khi tôi khởi động lại máy chủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.