2009-03-03 42 views
9

Tôi đang cố gắng triển khai một ứng dụng trong mạng máy khách, với bộ điều khiển AD/domain.Lời nhắc xác thực Windows cho tên người dùng/mật khẩu

Ứng dụng của tôi là một ứng dụng asp.net C# đơn giản, sử dụng xác thực cửa sổ.

Tôi đang sử dụng win2003.

Về cơ bản, sử dụng VS2008, tạo một trang web mới, được lưu trữ trên IIS6.0. Chỉ có 2 thay đổi. 1. Về bảo mật thư mục IIS cho ứng dụng, đã bật "Bảo mật tích hợp".
Lưu ý: ẩn danh cũng được bật.

Chỉ có một thay đổi đối với mã bộ xương được tạo. Thêm bên dưới để phương pháp Page_Load của default.aspx

using System.Security.Principal; 
... 
protected void Page_Load(object sender, EventArgs e) 
{ 
    WindowsIdentity id = WindowsIdentity.GetCurrent(); 
    Response.Write("<B>Windows Identity Check</B><br>"); 
    Response.Write("Name: " + id.Name + "<br>"); 
    Response.Write("<BR>"); 
    Response.Write("User.Identity: " + User.Identity.Name); 
    Response.Write("<BR>"); 
} 

Output của trình duyệt đến trang: của Windows nhận dạng Tên Trả phòng: NT AUTHORITY \ NETWORK DỊCH VỤ User.Identity:

User.Identity.Name không xuất ra tên người dùng hiện tại.

Như đã thảo luận trong bài viết này http://weblogs.asp.net/scottgu/archive/2006/07/12/Recipe_3A00_-Enabling-Windows-Authentication-within-an-Intranet-ASP.NET-Web-application.aspx

Tôi nói thêm:

<authorization> 
    <deny users="?"/> 
</authorization> 

Từ những gì tôi userstand là, khi điều này được thêm vào, tôi có thể nhận được những người sử dụng hiện tại, tên người dùng từ User.Identity.Name .

Tuy nhiên, khi tôi thêm phần trên, trình duyệt hiện nhắc tôi nhập tên người dùng và mật khẩu. Khi tôi nhập nó, tôi có thể sử dụng User.Identity.Name để lấy tên người dùng. Tuy nhiên tôi không muốn tên người dùng/mật khẩu bật lên để xuất hiện. Tôi muốn ứng dụng xác thực người dùng dựa trên thông tin đăng nhập mạng của họ.

Tôi có thiếu gì đó không?

+0

Bạn đã thử nghiệm trình duyệt nào? Chỉ có IE sẽ vượt qua xác thực tên người dùng/mật khẩu Windows. –

+1

Điều đó không nhất thiết đúng - FireFox hỗ trợ Windows Integrated Authentication. –

+0

Vâng, Firefox không có vấn đề gì với điều này, nó không chỉ xử lý tên máy chủ cục bộ như vùng tin cậy/mạng nội bộ theo mặc định như IE - nhưng chắc chắn nó có thể được cấu hình. Thậm chí có một mẫu ADM hiện có ở đâu đó cho FF Tôi nghĩ rằng các sysadmins lười biếng để sử dụng. –

Trả lời

0

Trang web của bạn sử dụng URL nào và vùng IE là gì? Nếu ứng dụng của bạn đang chạy bên ngoài vùng LocalIntranet, xác thực passthrough bị chặn, luôn nhắc Người dùng/Mật khẩu.

+0

Tôi vẫn đang cố truy cập nó cục bộ, sử dụng http: // localhost/site. Nó sẽ nhắc tất cả, IE, Firefox và Chrome – minalg

+0

Bạn có thể thêm nhật ký IIS có liên quan vào câu hỏi của bạn - tìm kiếm chuỗi nhật ký 401/200. Bạn cũng có thể thử http://127.0.0.1/site và xem liệu bạn có được nhắc không? –

0

Có phải "Bật xác thực tích hợp Windows" được chọn trong Tùy chọn Internet của IE không?

Làm cả IUSR_ và tên người dùng bạn nhập có Đọc và Thực thi quyền đối với thư mục mà ứng dụng được lưu trữ không?

Thư mục của ứng dụng có nằm trên máy chủ IIS hay thư mục nằm trên chia sẻ, nơi quyền chia sẻ của Windows sẽ đi vào hoạt động?

3

Kiểm tra xem trình thám hiểm internet có biết trang web là một phần của vùng mạng nội bộ cục bộ hay không. Ngoài ra, trong cài đặt cho khu vực mạng nội bộ kiểm tra rằng đăng nhập tự động được kích hoạt.

3

Cấu hình của bạn trong IIS không chính xác - tắt truy cập ẩn danh, sau đó xác thực tích hợp sẽ khởi động, giả sử bạn cũng đã đặt cấu hình đó trong web của mình.cấu hình qua

<configuration> 
    <system.web> 
     <authentication mode="Windows" /> 
    </system.web> 
</configuration> 
0

Tôi nghĩ rằng bạn không thể kiểm soát nó từ ứng dụng máy chủ, nó là chức năng trình duyệt để vượt qua các chứng chỉ, trong IE bạn có thể đề nghị người dùng của bạn để kiểm tra "kích hoạt Windows tích hợp xác thực" trong Internet Options-> tiên tiến

0

Bạn không muốn thay đổi bất kỳ cấu hình nào trong tệp we.config. Trong trình quản lý máy chủ IS trong Xác thực trang web, chỉ cho phép xác thực Windows và vô hiệu xác thực khác. enter image description here

Xác thực Windows cần thông tin xác thực = cửa sổ của bạn để xác thực người dùng. Đó là lý do để nhắc đăng nhập. Để tránh điều đó, bạn cần đặt IP hoặc tên miền trang web của bạn là trang web mạng nội bộ đáng tin cậy trong trình duyệt của khách hàng của bạn. Vì điều đó;

1) Chuyển đến cài đặt trình duyệt -> cài đặt proxy mở -> Security -> Intranet Local -> Sites -> Advanced

2) Sau đó, thêm miền trang web của bạn hoặc địa chỉ IP enter image description here

Bây giờ nhìn thấy cho dù vấn đề của bạn là ok sau khi bộ nhớ đệm trình duyệt rõ ràng.

Tác phẩm này dành cho tôi. :)

0

Bạn không muốn thay đổi bất kỳ cấu hình nào trong tệp we.config. Trong trình quản lý máy chủ IS trong Xác thực trang web, chỉ cho phép xác thực Windows và vô hiệu xác thực khác. enter image description here

Xác thực Windows cần thông tin xác thực = cửa sổ của bạn để xác thực người dùng. Đó là lý do để nhắc đăng nhập. Để tránh điều đó, bạn cần đặt IP hoặc tên miền trang web của bạn là trang web mạng nội bộ đáng tin cậy trong trình duyệt của khách hàng của bạn. Vì điều đó;

1) Chuyển đến cài đặt trình duyệt -> cài đặt proxy mở -> Security -> Intranet Local -> Sites -> Advanced

2) Sau đó, thêm miền trang web của bạn hoặc địa chỉ IP enter image description here

Bây giờ nhìn thấy cho dù vấn đề của bạn là ok sau khi bộ nhớ đệm trình duyệt rõ ràng.

Tác phẩm này dành cho tôi. :)

Kiểm tra điều này cũng Receiving login prompt using integrated windows authentication

+0

Không đăng cùng một câu trả lời nhiều lần. – Sunil

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