Chúng tôi có một ứng dụng ASP.NET trên ASP.NET 4.0 sử dụng MVC 3 trong đó sử dụng xác thực Windows.ASP.NET xác thực vấn đề trên IIS7 - User.Identity.Name là trống cho Windows xác thực
Khi chạy từ Visual Studio 2010, mọi thứ hoạt động như mong đợi nhưng khi được triển khai cho IIS7, người dùng đăng nhập Windows không bao giờ được điền (kiểm tra User.Identity.Name). Không có lời nhắc thoại cho thông tin đăng nhập của người dùng.
Thiết lập web.config:
<authentication mode="Windows" />
Trong IIS tôi có thể thấy rằng Windows authentication được kích hoạt, như là Anonymous (vô hiệu hóa kết quả Anonymous trong 403 Forbidden và không có nội dung được hiển thị).
Tôi đã thử cả bật và tắt "Xác thực chế độ lõi" (useKernelMode = "true"), nhưng điều này dường như không tạo ra bất kỳ sự khác biệt nào. Mặc dù tôi nhớ rằng chúng tôi đã phải vô hiệu hóa cài đặt này trên một trang web khác trên một máy chủ khác để có được xác thực hoạt động đúng cách (có thể trỏ đến vấn đề tiềm ẩn tiếp theo trong ngăn xếp?).
Trong trường hợp đó là hữu ích, từ applicationHost.config IIS của:
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<windowsAuthentication enabled="true" useKernelMode="false">
<providers>
<clear />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
</security>
ý tưởng Bất kỳ những gì vấn đề này có thể được?
Cảm ơn trước vì bất kỳ đề xuất nào.
Cập nhật 1
tôi quản lý để tìm một máy chủ IIS7 để thử nghiệm trên và tôi thấy nếu tôi vô hiệu hóa truy cập Anonymous tất cả mọi thứ đã làm việc như mong muốn. Tuy nhiên tôi vẫn còn có vấn đề trên máy chủ IIS7 gốc ngay cả khi tôi vô hiệu hóa truy cập Chưa xác định là tốt (Tôi đang giữ Anonymous vô hiệu hóa ngay bây giờ). Vì vậy, phải có một số vấn đề tiếp tục xuống ngăn xếp tôi đoán. Bất kỳ ý tưởng? Một cái gì đó tôi cần phải sửa chữa như nó sẽ tiếp tục popping lên và cắn chúng tôi tôi tưởng tượng.
Cập nhật 2
Nếu tôi cho phép Digest Authentication về vấn đề hộp IIS7 sau đó tôi đang thách thức với hộp thoại nhắc đăng nhập và mọi thứ hoạt động như mong đợi nếu tôi cung cấp thông tin phù hợp. Nhưng là một ứng dụng web nội bộ với người dùng đã đăng nhập vào miền, chúng tôi không thực sự muốn thách thức họ theo cách này. Thông tin đăng nhập phải được chuyển qua một cách minh bạch khi nó hoạt động trên hộp IIS7 thứ hai.
Cập nhật 3
Một số tiến bộ ... Tôi đã phát hiện ra rằng nếu ứng dụng web là trong thư mục gốc và không phải là một trang web phụ sau đó trực tiếp chỉnh sửa các tập tin applicationHost.config cho IIS7 để cung cấp cho các thẩm định sau đây cài đặt cho phép trang web hoạt động như mong đợi:
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true">
<providers>
<clear />
<add value="NTLM" />
</providers>
</windowsAuthentication>
<digestAuthentication enabled="false" />
</authentication>
Sử dụng giao diện người dùng của IIS7 để định cấu hình xác thực không cho kết quả phù hợp. các mục xác thực bị thiếu sau khi các phường (như tôi đoán IIS7 giả định chúng đang được thừa hưởng) hoặc chúng có các thiết lập sai (windowsAuthentication có vẻ như cần cấu hình các nhà cung cấp ở trên hiện tại để hoạt động chính xác).
Thật không may ứng dụng web được đề cập thực sự là một ứng dụng phụ vì có phiên bản nội bộ (sử dụng xác thực cửa sổ> www.site.com/nội bộ) và phiên bản bên ngoài (sử dụng xác thực biểu mẫu> www.site.com/external). Tôi vẫn chưa thể nhận được xác thực để hoạt động như một ứng dụng phụ. Tôi chỉ nhận được một "Mã lỗi: 403 bị cấm".
kiểm tra điều này: http://stackoverflow.com/questions/1067591/user-identity-name-blank-in-asp-net-mvc –
bạn đang thử nghiệm trình duyệt nào? Nếu đó là Firefox, bạn có thể muốn kiểm tra: https://addons.mozilla.org/en-US/firefox/addon/integrated-auth-for-firefox/ Firefox không có xác thực cửa sổ "bật" chính xác ra khỏi cái hộp. – NotMe
Chúc mừng Davide, nhưng không có gì giúp được ở đó. Anh chàng này dường như có vấn đề nhận được Windows xác thực để làm việc vì anh ta đã bỏ lỡ các thiết lập web.config (vì vậy không thể làm việc trong VS hoặc IIS). Tất cả mọi thứ hoạt động tốt cho tôi trong VS, nó chỉ IIS mà mọi thứ không hoạt động như mong đợi. – Gavin