2011-09-28 32 views
8

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".

+0

kiểm tra điều này: http://stackoverflow.com/questions/1067591/user-identity-name-blank-in-asp-net-mvc –

+0

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

+0

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

Trả lời

3

Trong trường hợp này, đó là sự cố Microsoft ISA Server. Dường như yêu cầu được định tuyến nội bộ thông qua ISA cho trang Windows Authenticated, khi ISA bị loại bỏ thì vấn đề đã biến mất.

Tôi không biết nhiều về ISA và cách nó định tuyến các yêu cầu nhưng tôi cho rằng nó phải loại bỏ một số thông tin quan trọng từ yêu cầu vì một số quy tắc mà ai đó sẽ định cấu hình. Là một lưu ý phụ trong trường hợp nó giúp chẩn đoán các thiết lập tương tự: Tôi được nhân viên quản trị mạng nói rằng lưu lượng truy cập nội bộ không được định tuyến qua ISA, nhưng ping trang web nội bộ cho thấy ISA thực sự đang hoạt động.

0

Bạn đã đề cập rằng vô hiệu hóa quyền truy cập ẩn danh đã hoạt động trên một máy chủ khác, nhưng trên máy chủ chính của bạn, bạn đang gặp phải 403 lỗi. Do đó, tôi sẽ kiểm tra quyền dựa trên tệp trên thư mục nơi trang web của bạn đang chạy. Trong quá khứ, tôi cần phải cấp quyền kiểm soát toàn bộ tài khoản Serivce \ Network cho thư mục trang web và tất cả các thư mục con hoặc tôi sẽ gặp phải 403 lỗi. Kiểm tra quyền truy cập tệp trên máy chủ đang hoạt động và xem liệu có sự khác biệt với máy chủ không hoạt động hay không.

Ngoài ra, nếu đây không phải là vấn đề, tôi khuyên bạn nên so sánh tất cả các cài đặt IIS khác giữa hai máy chủ, vì bạn biết nó hoạt động trên một máy và không phải là máy kia. Tìm sự khác biệt.

+0

Cảm ơn Paige, nhưng vẫn không có niềm vui. Dịch vụ mạng có đầy đủ quyền đối với các thư mục và cũng được sử dụng bởi App Pool. Tôi đang so sánh các máy chủ, nhưng không có sự khác biệt rõ ràng cho đến nay. Tôi tự hỏi nếu nó là một cái gì đó để làm với cấu hình AD là khác nhau cho các hộp khác nhau. Sẽ theo dõi một thành viên của nhóm hoạt động để thử và điều tra thêm. – Gavin

+0

@Gavin, bạn cần phải kiểm tra quyền đối với danh tính của hồ bơi ứng dụng không cần dịch vụ mạng. – VinayC

+0

@VinayC - chúc mừng. Trong trường hợp này, dịch vụ mạng đang được sử dụng bởi ứng dụng poolNetwork Service cũng có quyền đầy đủ đối với các vị trí tệp. – Gavin

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