5

Tôi đã phát triển một ứng dụng web trong ASP.NET MVC mà chúng tôi đang sử dụng nội bộ. Bây giờ chúng tôi muốn làm cho nó có sẵn thông qua máy chủ của chúng tôi trên internet - để làm cho cuộc sống dễ dàng hơn khi chúng tôi đang làm công việc trên trang web.Xác thực Windows MVC ASP.NET trên các hình thức xác thực

Lý tưởng nhất là tôi muốn chỉ dính xác thực Windows trước mặt của nó, vì vậy mà bất cứ ai với một tài khoản miền có thể đăng nhập.

Vấn đề là tôi đã sử dụng hình thức xác thực trong ứng dụng.

Chúng tôi không có bất kỳ hạn chế mật khẩu nào đối với ứng dụng, bạn chỉ cần chọn người dùng bạn muốn đăng nhập và sau đó gửi biểu mẫu. Ở phía máy chủ, nó chỉ thực hiện việc này -

FormsAuthentication.SetAuthCookie(viewModel.Username, true); 

Điều này làm cho tên người dùng có sẵn trong tất cả các bộ điều khiển và chế độ xem bằng cách sử dụng đối tượng Người dùng (user.identity.name).

Tuy nhiên ... khi tôi bật xác thực Windows trong IIS, ứng dụng web bắt đầu nghĩ rằng user.identity.name là "ourdomain \ domainuser".

Điều tôi muốn là sử dụng xác thực biểu mẫu cùng với xác thực cửa sổ nhưng không tích hợp chúng theo bất kỳ cách nào.

Có cách nào đơn giản để đạt được điều này không?

+0

Vâng, tên _is_ 'ourdomain \ domainuser'. Bạn mong đợi điều gì? –

Trả lời

6

Nhóm ASP.NET không chính thức hỗ trợ bằng cách sử dụng xác thực chế độ hỗn hợp trong một ứng dụng. Nếu bạn tìm kiếm trên web, bạn sẽ tìm thấy các bài đăng trên blog về cách thực hiện điều này, nhưng xin lưu ý rằng chúng không được nhóm ASP.NET khuyến khích. Lý do không được khuyến khích là rất khó để lý luận từ một quan điểm chính xác, và có những cuộc tấn công tầm thường chống lại một thiết lập như vậy có thể cho phép các khách hàng độc hại giả mạo như một người dùng được xác thực.

+1

Tôi cuối cùng đã quyết định nó không phải là giá trị nỗ lực. – NoPyGod

1

Bạn không thể sử dụng xác thực biểu mẫu và xác thực Windows cùng một lúc trong IIS 7 trở lên trong Chế độ tích hợp. Do đó, tôi sẽ đánh giá cao sự tiếp cận đó. Tuy nhiên, bạn có thể sử dụng được xây dựng trong ActiveDirectoryMembershipProvider Class để xác thực tài khoản người dùng Windows thông qua biểu mẫu và buộc đăng nhập của bạn vào đó.

+0

Thực ra, bạn có thể sử dụng Xác thực Windows và Xác thực biểu mẫu trong IIS7 +. Bạn có thể sử dụng chế độ cổ điển hoặc với chế độ tích hợp. Bạn chỉ cần thực hiện một chút chỉnh sửa trong nền để tích hợp. Xem http://mvolo.com/blogs/serverside/archive/2008/02/11/IIS-7.0-Two_2D00_Level-Authentication-with-Forms-Authentication-and-Windows-Authentication.aspx –

+0

@MystereMan Trên thực tế, liên kết tinh chỉnh của bạn vẫn không sử dụng cả hai cùng một lúc mặc dù nó cung cấp cho rằng sự xuất hiện cho người dùng. Tuy nhiên, bạn chính xác là bạn vẫn có thể thực hiện xác thực hai giai đoạn bằng Chế độ cổ điển. Tôi không xem một trong hai như là một giải pháp đặc biệt tốt mặc dù. Đối với giải pháp mvolo.com, bạn đang giới thiệu rất nhiều tính phức tạp bổ sung có thể tránh được. Đối với Chế độ cổ điển, bạn đang theo dõi một mô hình có khả năng sẽ biến mất sau cùng. Ý kiến ​​của tôi là nó tốt hơn cho kiến ​​trúc sư những điều đúng đắn ở nơi đầu tiên. – JamieSee

+0

@MystereMan Bài viết đó không thảo luận về xác thực hỗn hợp trong ngữ cảnh của MVC. –

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